1

我有这个代码:

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 != "@")

是什么赋予了?

4

2 回答 2

2

==用于比较字符串;使用String#equals代替。

...
while (!word.equals("@"));
于 2013-03-31T05:37:03.300 回答
1

您需要使用 .equals() 方法而不是 == 操作。"==" 操作用于比较诸如 boolean、int、long、ect 和references之类的原语。

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

于 2013-03-31T05:43:12.660 回答