我有这段代码:
Scanner inputScanner = new Scanner(System.in);
String word;
do
{
word = inputScanner.next();
System.out.println(word + ": " + dict.contains(word));
}
while (word != "@");
这很简单,但是在收到用户的@
输入后,循环不会终止。我看到其他人抱怨Scanner
容易出错并且可能会产生意想不到的结果,但这并不能解释为什么dict.contains(word)
完全正常运行而while (word != "@")
条件没有做到...
是什么给出了?
答案 0 :(得分:2)
您正在使用==
来比较字符串;请改用String#equals。
...
while (!word.equals("@"));
答案 1 :(得分:1)
您需要使用.equals()方法而不是==操作。 “==”操作用于比较boolean,int,long,ect和 references 等基元。
String是一个对象,因此Java假定您要比较引用值而不是字符串中包含的值。另请记住,您无法将Long,Integer,Double等与==运算符进行比较。