This question already has answers here:
How do I compare strings in Java?
(23个答案)
6年前关闭。
我正在使用Java,一直在尝试将字符串输入分为3部分。例如,我的输入将为“ AND 1 1”,并且我希望它进入条件为parts [0] ==“ AND”的if循环中。但是事实并非如此,我不确定为什么。
我的代码在下面列出
应该
字符串是不可变的,因此当函数必须对它们执行某些操作时,它们将始终返回新的字符串。因此,使用
(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"))
字符串是不可变的,因此当函数必须对它们执行某些操作时,它们将始终返回新的字符串。因此,使用
==
仅在某些特定情况下有效,而在处理它们时则无效。