2011-10-06 51 views
3

所以這是一個愚蠢的問題,但由於某種原因,這不適合我。這是我正在嘗試做的一個小程序的一小部分,我正在調試,但一個簡單的if語句由於某種原因不起作用。這是下面的代碼:如果陳述奇怪地工作不正常......不知道

System.out.println("Enter a command (Enqueue, Dequeue, or Quit): "); 
String expr = input.next(); 
System.out.println(expr); 
if (expr=="Enqueue") { 
    System.out.println("Enqueue");} 

所以應該簡單地抓取輸入,如果我輸入排隊進入的提示,應該把它打印出來。問題是它沒有這樣做。當我檢查變量expr的值時,它顯示爲字符串Enqueue,但它不會進入並打印出奇怪的。有什麼愚蠢的我失蹤了嗎?

+0

另請參閱:http://stackoverflow.com/questions/767372/java-string-equals-versus –

回答

5

你想

if (expr.equals("Enqueue")) { 

==並不安全與字符串使用。該運算符將兩個參考文獻進行比較以得到相等性,當兩個參考文獻指向相同的實例時,這隻會是真的。在這種情況下,您有兩個具有相同的不同實例。爲了進行價值比較,我們使用.equals()

+0

完美!這很好,謝謝你!我從來沒有想過這個...... –

+0

是的,從我從官方的Java教程中看到的很少,他們沒有很好地警告你這件事。 –