Java If 语句未在 while 循环内运行

时间:2021-02-02 21:30:17

标签: java

我正在尝试解析具有格式的 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”语句没有运行? 谢谢!!

1 个答案:

答案 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);

    }
}