2013-03-31 55 views
1

我有这样的代码:扫描仪输入+ do-while循环行为非常奇怪

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

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

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

哇,我觉得哑巴。我只是假定String对象像'String.equals()'一样处理'=='运算符。非常感谢! –

1

您需要使用.equals()方法而不是==操作。 “==”操作用于比较诸如布尔型,int型,long型等的基元和参考文献

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