这是我的 CSV 文件:marks.csv,其中包含左侧的学号和右侧的分数:
B00123,55
B00783,35
B00898,67
我需要能够搜索该文件并找到最大标记和最小标记。我有这段返回值的代码,但我不知道之后要做什么:
public static void MaxAndMin()
{
// .csv files are comma separated
String fileName = "src\\data\\marks.csv";
File file = new File(fileName);
try
{
Scanner inputStream = new Scanner(file);
while(inputStream.hasNext())
{
String data = inputStream.next();
String [] values = data.split(",");
int mark = Integer.parseInt(values[1]);
System.out.println(mark);
}
inputStream.close();
}
catch (FileNotFoundException ex)
{
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
这将返回以下内容:
55
35
67
接下来我可以尝试什么?
最佳答案
对此问题的更短、更清晰、更简洁的答案可能如下:
private static void minAndMax() {
try (Stream<String> stream = Files.lines(Paths.get(FILE_PATH))) {
IntSummaryStatistics statistics = stream
.map(s -> s.split(",")[1])
.mapToInt(Integer::valueOf)
.summaryStatistics();
System.out.println("Lowest:: " + statistics.getMin());
System.out.println("Highest:: " + statistics.getMax());
} catch (IOException e) {
e.printStackTrace();
}
}
只需读取文件的行,打开 Stream<String>
,映射并将其拆分为逗号,映射到 Integer
并创建一个 IntSummaryStatistics
对象从其中出来。然后只需使用 getMin
和getMax
值(value)观。干净简单。另请注意,此答案使用 try-with-resources 来自动管理可能需要手动处理的各种操作。
关于java - 如何在 Java 中从 CSV 文件获取最大值和最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55144549/