2015-01-14 47 views
-2

如何在if聲明中顯示它是否不相同(!=,可能是這樣的內容)?如何在if語句(Java)中顯示!equals?

例如:

for (int g = 0; g < doglist.size(); g++){ 
    if(doglist.get(g).equals(name)){ 
     System.out.println("There is no dog with that name: "); 
    } 
} 

所以在這個代碼中,我要打印的消息,如果在列表中的條目不等於名稱。所以,而不是equals(name)我不得不使用不同的東西。這怎麼可能?

+0

嗨Nanabua,歡迎來到SO。請閱讀[問]和[答案]。你的問題很好,所以你不需要做任何事情來解決它。 –

+0

您是否要求輸入代碼以顯示列表中沒有名稱屬性等於給定名稱的狗? – Gus

回答

4

爲了清楚起見,您可以使用NOT運算符!和適當的括號(儘管不是嚴格要求)。

if (!(condition)) 
你的情況

左右....

if(!(doglist.get(g).equals(name))) 
+1

打我衝賭是這個偉大工程,減少了代碼 – jgr208

+0

你還需要確保doglist.get(G)是不以某種方式無效,因爲否則你會拋出NullPointerException。 –

+0

只是爲了確保沒有混淆:圍繞條件的括號並非絕對必要,儘管是可取的。 – blalasaadri

0

你應該寫

if (!doglist.get(g).equals(name)) 

關於您使用!=的想法:對於基本數據類型,是的,它是正確的測試平等使用!=.equals()用於對象數據類型。然而,對一個對象應用!=將測試操作數的內存位置是否相同,這不是相關信息。 .equals()是測試對象是否實際相等的測試。

例如,比較int S(基本類型)時,你可以使用!=

int a = 0, b = 1; 
if (a != b) doSomething(); //Calls the method 

基本類型不承認.equals()方法在所有。但是,如果你想比較String S(對象類型),你可以使用!<object>.equals()

String s1 = "Hello", s2 = "World"; 
if (!s1.equals(s2)) doSomething(); //Calls the method 

如果一個對象使用!=,它會編譯,但可能不會產生所需的輸出:

String s1 = "Hello!"; 
String s2 = "Hello!"; //Make a new object with the same data -- contains "Hello!" 
if (s1 != s2) doSomething(); //Will run doSomething(), even though s1.equals(s2) 
+0

實際上,這會起作用 - 代碼將得到JIT'd,'s1'和's2'將指向同一個對象。請恢復那一點。 –