This question already has answers here:
How do I compare strings in Java?
                                
                                    (23个答案)
                                
                        
                6年前关闭。
            
        

我正在使用Java,一直在尝试将字符串输入分为3部分。例如,我的输入将为“ AND 1 1”,并且我希望它进入条件为parts [0] ==“ AND”的if循环中。但是事实并非如此,我不确定为什么。

我的代码在下面列出

Scanner stringInput = new Scanner(System.in);
String input = stringInput.next();
System.out.printf("%s\n", input);
String[] parts = input.split(" ");

if (parts[0] == "AND") {
    if (parts[1] == parts[2] && parts[1] == "1")
        System.out.printf("1\n");
    else
        System.out.printf("0\n");
}
else {
    if (parts[1] == "1" || parts[2] == "0")
        System.out.printf("1\n");
    else
        System.out.printf("0\n");
}

最佳答案

在Java中,您不能确定字符串是否是您认为的对象。因此,您不应使用==比较对象,而应使用equals函数。

if (parts[0] == "AND")


应该

if (parts[0].equals("AND"))


字符串是不可变的,因此当函数必须对它们执行某些操作时,它们将始终返回新的字符串。因此,使用==仅在某些特定情况下有效,而在处理它们时则无效。

09-10 08:55
查看更多