import java.io.File; import java.io.FileNotFoundException; import java.io.PrintStream; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; import java.util.StringTokenizer; public class StockAnalysis { public static void main(String[] args) throws FileNotFoundException, ParseException { PrintStream output = System.out; String symbol = "gts"; String fileName = symbol + ".csv"; File file = new File(fileName); Scanner fileInput = new Scanner(file); fileInput.nextLine(); // skip first line double highest = 0; Date dateOfHighest = null; double lowest = Double.MAX_VALUE; Date dateOfLowest = null; while (fileInput.hasNextLine()) { String line = fileInput.nextLine(); StringTokenizer tokenizer = new StringTokenizer(line, ","); SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy"); Date date = format.parse(tokenizer.nextToken()); tokenizer.nextToken(); // skip second token double high = Double.parseDouble(tokenizer.nextToken()); double low = Double.parseDouble(tokenizer.nextToken()); if (high > highest) { highest = high; dateOfHighest = date; } if (low < lowest) { lowest = low; dateOfLowest = date; } } fileInput.close(); final double PERCENT = 100; if (dateOfLowest.before(dateOfHighest)) { double profit = PERCENT * (highest - lowest) / lowest; output.printf("If I had bought %4$s shares on %1$tm/%1$td/%1$ty%nand sold them on %2$tm/%2$td/%2$ty%nI would have made a %3$.2f%% profit%n", dateOfLowest, dateOfHighest, profit, symbol); } else { double loss = PERCENT * (highest - lowest) / highest; output.printf("If I had bought %4$s shares on %1$tm/%1$td/%1$ty%nand sold them on %2$tm/%2$td/%2$ty%nI would have made a %3$.2f%% loss%n", dateOfHighest, dateOfLowest, loss, symbol); } } }