java - 如何在 Java 中从 CSV 文件获取最大值和最小值

标签 java loops csv while-loop

这是我的 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对象从其中出来。然后只需使用 getMingetMax值(value)观。干净简单。另请注意,此答案使用 try-with-resources 来自动管理可能需要手动处理的各种操作。

关于java - 如何在 Java 中从 CSV 文件获取最大值和最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55144549/

相关文章:

java - Play Framework 中同一实体上的 ManyToMany

java - "ABC"和新字符串 ("ABC"之间有什么区别)?

java - 现有字符串加倍

objective-c - 如何遍历并在数组中添加重复项

python - 如何在 python 中逐行读取文件并同时逐个元素读取列表元素

java - Do-while 循环不会逃脱 - Java

java - 将逗号分隔的字符串转换为 HashSet

java - 有没有办法找出CMD中命令的图像路径?

c - 当一个 .csv 文件在 excel 中打开并另存为 excel 工作表时。它是否具有与原始 excel 工作表相同的属性?

json - 在 Azure Cosmos DB 或 Azure Blob 中将 JSON 转换为 CSV