2012-05-29 42 views
-1

有轻微问题,下面的代码块:javaj:输入/ if语句故障

newusr = c.readLine("New user? "); 
if (newusr == "y") { 
    System.out.println("IF"); 
    usnm = createNewUser(); 
    usnm = loginToClient(); 
} 
else { 
    System.out.println("ELSE"); 
    usnm = loginToClient(); 
} 

基本上,当我输入单个字符“y”键的提示,就带我到别的情况因此直接指向loginToClient方法。这是怎么回事;是在不同的编码或什么的“Y”?

c是一个控制台。

+0

尝试输出newusr到屏幕上,你看到了什么?只是为了好玩,试着输出newusr的长度。你可能会感到惊讶。 – Tremmors

+0

'=='将两个引用与一个对象进行比较,即它们是同一个对象。 '.equals()'可以比较两个对象的*内容*。 –

回答

1

来比比字符串在Java中使用等号,就像这样:

... 
if (newusr.equals("y")) 
... 
+0

我感到非常愚蠢,谢谢。我真的知道我应该使用这个,我不知道为什么我没有或没有看到这个... – gossfunkel

0

为什么不做if(("y").equals(newusr))并检查?

如果不输入值,这也将避免NullPointerException

0

代码newusr == "y""y"比较newusr变量的存储位置。哪个会失败。

您应该使用.equals()方法比较对象。