我正在尝试解析具有格式的 CSV 文件:姓名、性别、受欢迎程度。我想计算文件中存在的所有女性,但我无法这样做。以下是文件中的示例数据:Mary, F, 51479。这是我的代码:
import java.io.*;
public class CSVFile {
public static void main(String [] args)throws IOException{
String file_name = "xyz.csv";
BufferedReader f = new BufferedReader(new FileReader(file_name));
String line ;
int female_count = 0;
while ((line = f.readLine()) != null){
String [] values = line.split(",");
if (values[1] == "F"){
female_count += 1;
}
}
System.out.println(female_count);
}
}
有人可以向我解释为什么我的“if”语句没有运行? 谢谢!!
答案 0 :(得分:3)
下面的字符串 Mary, F, 51479
,当被 ,
分割时,将返回一个包含 Mary
、 F
和 51479
项的数组。请注意,前导空格将使 .equals()
比较在您的代码中返回 false。
简而言之,.split()
将在您的示例中的第一个之后的每个项目中包含一个前导空格,因此使用 .trim()
删除前导和尾随空格。您也没有正确比较字符串 - 使用 .equals()
。
以下应该有效:
import java.io.*;
public class CSVFile {
public static void main(String [] args)throws IOException{
String file_name = "xyz.csv";
BufferedReader f = new BufferedReader(new FileReader(file_name));
String line ;
int female_count = 0;
while ((line = f.readLine()) != null){
String [] values = line.split(",");
if (values[1].trim().equals("F")){
female_count += 1;
}
}
System.out.println(female_count);
}
}