我是一名Java初学者。我有一个格式为(城市;性别;年龄)的 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++; } }}
2 回答
![?](http://img1.sycdn.imooc.com/545862db00017f3402200220-100-100.jpg)
一只斗牛犬
TA贡献1784条经验 获得超2个赞
可以使用 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);
![?](http://img1.sycdn.imooc.com/5f33c0c90001f9ad05720572-100-100.jpg)
白衣非少年
TA贡献1155条经验 获得超0个赞
您正在尝试"string".equals("<40")检查 string"string"是否等于 string "<40",而不是该值是否小于 40。
尝试将字符串 at 转换l[2]为整数,然后进行检查:
int age = Integer.parseInt(l[2]);
if (l[0].equals("CityA") && l[1].equals("M") && age < 40) {
count++;
}
添加回答
举报
0/150
提交
取消