繁体   English   中英

用Java解析CSV文件

[英]Parsing CSV File in Java

我是Java初学者。 我有一个(City; Gender; Age)格式的CSV文件。 例如,我如何计算某个城市中有多少个年龄在40岁以下的男性。 有什么建议么?

public void method() throws IOException {
     int count = 0;
     FileReader fr = new FileReader(file);
     BufferedReader br = new BufferedReader(fr);
     String line;
     while((line = br.readLine())!= null){
         br.readLine();
         String [] l = line.split(";");
          if(l[0].equals("CityA")&&l[1].equals("M")&&l[2].equals("<40")) {
              count++;
          }    
      }
}

可以使用streamAPI完成:

long count = Files.lines(Paths.get(PATH_TO_CSV))
            .map(s -> s.split(";"))
            .filter(arr -> arr[0].equals("CityA"))
            .filter(arr -> arr[1].equals("M"))
            .filter(arr -> Integer.parseInt(arr[2]) < 40)
            .count();

System.out.println(count);

您正在尝试执行"string".equals("<40") ,它正在检查字符串"string"是否等效于字符串"<40" ,而不是如果该值小于40。

尝试将l[2]处的字符串转换为整数,然后进行检查:

int age = Integer.parseInt(l[2]);
if (l[0].equals("CityA") && l[1].equals("M") && age < 40) {
    count++;
}

如果line = br.readline()开始处有line = br.readline() ,则不需要第二条语句br.readline(); 一会儿里面。 您没有得到正确的答案吗? 您是否要改善代码风格?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM