扫描仪输入+ do-while循环表现得非常奇怪

时间:2013-03-31 05:35:41

标签: java input java.util.scanner

我有这段代码:

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 != "@")条件没有做到...

是什么给出了?

2 个答案:

答案 0 :(得分:2)

您正在使用==来比较字符串;请改用String#equals

...
while (!word.equals("@"));

答案 1 :(得分:1)

您需要使用.equals()方法而不是==操作。 “==”操作用于比较boolean,int,long,ect和 references 等基元。

String是一个对象,因此Java假定您要比较引用值而不是字符串中包含的值。另请记住,您无法将Long,Integer,Double等与==运算符进行比较。