即使评估为真,语句也不会执行

时间:2012-09-03 05:46:09

标签: java

在以下代码中,if(timesout[entry] == "exit")下的块将永远不会执行。我已经验证timesout[entry]当前循环在调试模式下被设置为“exit”,并且在if语句被评估之前打印出变量,但无论如何,当我输入时,块永远不会执行{ {1}}在提示时,我很难过为什么。

exit

3 个答案:

答案 0 :(得分:9)

timesout[entry] == "exit"

使用equals()比较字符串,==比较引用相等

查看

答案 1 :(得分:4)

而不是

if(timesout[entry] == "exit") 

使用

if(timesout[entry].equals("exit"))

if("exit".equals(timesout[entry]))

==和equals()

之间的更多信息
 http://stackoverflow.com/questions/12171783/how-is-it-possible-for-two-string-objects-with-identical-values-not-to-be-equal/12171818#12171818 

答案 2 :(得分:1)

你能试试吗

if("exit".equals(timesout[entry]))

而不是

if(timesout[entry] == "exit")

正如@Jigar Joshi所指出的那样,==equals()

的区别和含义see