2015-07-18 61 views
1

在下面的代碼片段中,我被告知在if語句中,this.item [i]和item的位置不能交換,因爲項目[i ]數組。我不明白爲什麼...Java等於關於數組中的null的方法

我被告知的作品:if(this.item [i] .equals(item)) 我被告知不起作用:if(item.equals(this .item [i]))

public boolean contains(Object item){ 
    for(int i = 0; i < this.numItems; i ++) 
     if(this.item[i].equals(item)) 
      return true; 
     } 
    return false; 
} 
+1

您應該指定它是什麼語言。 –

+0

這個問題需要更加明確。你談論的是交換數組索引,空索引,你把比較索引的代碼片斷。這些東西都不相互關聯,所以沒有人知道你在說什麼或問什麼。請重新填寫你的問題。 – searchengine27

回答

0

首先,您應該將項目投射到該項目所在的類。您正在比較原始對象。所以,如果你的類是Item.class

if (item instanceof Item) 
{ 
    Item i = (Item)item; //where item is the object passed to the method. 
} 

此外,如果項目[i]爲NULL,你不能使用它的方法equals。嘗試做一個空檢查,然後使用equals像這樣:

if (item != null && item instanceof Item) 
{ 
    for (int i = 0; i < item.length; i++) 
    { 
     Item castedItem = (Item)item; 
     if (item[i] != null && item[i] instanceof Item && item[i].equals(castItem)) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
}