2011-06-12 60 views
0

(pass[i]!= null) && (pass[i].getName()!= "nullnull") < --returning真當我調試它,即使的pass[i].getName() == "nullnull"值當我檢查它在Eclipse中使用表達式窗口同時使用輸入對話框中輸入兩種調試爲什麼這個表達式返回true

IM名

String firstName = (String)JOptionPane.showInputDialog("Enter First Name"); 
String lastName = (String)JOptionPane.showInputDialog("Enter Last Name"); 

,並返回

public String getName() 
    { 
     return FirstName + LastName; 
    } 
+0

沒有上下文,你的問題是沒有意義的 – Bohemian 2011-06-12 04:32:32

回答

5

你具有相同值的兩個不同的字符串,b你是通過參考比較它們。

您需要通過編寫"nullnull".equals(pass[i].getName())來比較它們的價值。
即使getName()返回null,顛倒的順序仍然有效。

2

我想你使用 「.equals」 需要

(pass[i]!= null) && (!pass[i].getName().equals("nullnull")) 
4

嘗試

(pass[i]!= null) && !(pass[i].getName().equals("nullnull")) 
0

說實話,它幾乎總是將是真實的:

在Java中==操作比較器對象引用。你想要.equals()方法。

代碼中存在空白 - 如果getName()返回null,則會發生爆炸。

+0

不一定是差距。如果你記錄某個屬性不能爲空(並保護那個不變量),那麼就沒有問題了。這實際上是更好的設計,並導致更簡潔的代碼。在這種情況下,它肯定不會爲空,因爲'Firstname + Lastname'是無效的並且永遠不會返回null。 – 2011-06-12 04:49:52

1

不應將字符串與==!=進行比較。 使用String.equals()

==將返回true,並且!=僅當兩個字符串是相同的字符串對象(這與比較它們表示的文本不同)時纔會返回false。

相關問題