2016-09-25 16 views
-2

ここでは、オブジェクト配列を検索して選択したオブジェクトを削除するdeleteメソッドを作成しました。 「互換性のないオペランドの型DogListとDogItem」オブジェクトをarraylistから削除する

をすべてのヘルプは素晴らしいだろう:ループ(gi != dogListArray[i])がエラーを投げている間、私は最初に、なぜ周り私の頭をラップカント

public class DogList { 
    private int numItems; 
    private DogItem[] dogListArray; 
    private int position; 
    private String name; 

    DogList() { 
     numItems=0; 
     position = 0; 
     dogListArray = new DogItem[20]; 
    } 

    DogList(String name) { 
     this.name = name; 
    } 

    public void deleteItem(DogList gi) { 
     int i = 0; 
     while((i < numItems) && (gi != dogListArray[i])) { 
      i++; 
     } 

     if(i == numItems) { 
      // Throw exception if there is not matching Item 
      throw new NoSuchElementException("That item does not exists"); 
     } 
     int pos = i; 
     while(pos < numItems -1) { 
      dogListArray[pos] = dogListArray[pos + 1]; 
      pos++; 
     } 
     numItems --; 
    } 

。 コードはかなり長いので、あなたが編集して必要なものを表示する部分を見たい場合は、コードがかなり長いです。

+0

「gi [i]!= dogListArray [i] 'ではありませんか? – Checkmate

+3

あなたの配列 'dogListArray'は' DogItem'クラスのオブジェクトを含んでいます。 'DogList'と比較しようとすると、エラーを返します。 –

+1

クラスの完全な実装を共有すると役に立ちます。 –

答えて

2

dogListArrayDogItem[]であり、dogListArray[i]DogItemであると仮定しています。私はgiDogListではなくDogItemであると想定していますか?

別のただし関連するノートでは、==または!=ではなくequalsメソッドを使用してオブジェクトを比較する必要があります。この側面の説明をhereを参照してください。

関連する問題