Вы на правильном пути, прочитав строки файла и разделив каждую строку разделителем (запятая в вашем регионе).
Чтобы найти максимальное значение, у вас есть несколько возможностей. Простым будет атрибут класса, скажем, private int maxValue = -1;
, который вы можете использовать для хранения текущего максимума в цикле. Убедитесь, что maxValue
меньше текущего значения (mark
в вашем коде), и если да, установите maxValue = mark;
.
В качестве альтернативы вы можете хранить все значения в структуре данных для примитивов и String
s или создавать объекты надлежащего пользовательского класса и сохранять их, например, в List
. Затем выполните итерацию структуры или используйте обновленный API потока. Вот небольшой пример:
public static void main(String[] args) {
// use java.nio to access the file system object
Path csvPath = Paths.get("U:\\temp\\stackoverflow\\some_file.csv");
// create a data structure that stores the values read from csv file
Map<String, Integer> lineValues = new HashMap<String, Integer>();
try {
// read the file content (this does not take care of a header line!)
List<String> lines = Files.readAllLines(csvPath, StandardCharsets.ISO_8859_1);
// split each line into the values
lines.forEach(line -> {
String[] values = line.split(",");
// put the values into the data structure
lineValues.put(values[0], Integer.parseInt(values[1]));
});
// use the stream api to get the maximum value from the data structure
int max = lineValues.values().stream().max(Integer::compareTo).get();
// print the result
System.out.println("The maximum value in " + csvPath.toAbsolutePath().toString() + " is " + max);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}