2013-11-14 328 views
0

我將檢查JLabel是否與電視節目的名稱相同。JLabel未與字符串進行比較

我的代碼

public int lastEp() { 
    if(name.getText() == "Dexter") { 
     switch (season) { 
     case 1: 
      return 12; 
     case 2: 
      return 12; 
     // etc. 
     } 
    } 
    return -1; 
} 

我在控制檯查了一下我從name.getText()獲得和控制檯打印「德克斯特」。 仍然我的if語句不會返回true。 System.out.println(name.getText() == "Dexter")給出了錯誤,而System.out.println(name.getText() + " " + "Dexter")給出了「德克斯特德克斯特」。 發生了什麼?

此外,如果有人知道我應該返回而不是-1,如果沒有其他選項適合,如果有一個很好的標準可以遵循,這是一個額外的問題。

+0

要作爲副本關閉:不要使用==來比較字符串。改爲使用「equals(...)」或「equalsIgnoreCase(...)」字符串方法。 –

+0

「可能」哈哈 – nhgrif

+0

@nhgrif:這是自動消息,當你只是closevote。 –

回答

1

這是一個擴展的意見和問題,應關閉

String S IN的Java與String#equals==

例如相比,

"Dexter".equals(name.getText()) 

您目前比較對象(內存)的參考,這將很少會相同

查看Strings足跡以瞭解更多詳情