2012-05-29 41 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()方法比較對象。