2016-09-25 4 views
-2

여기에 객체 배열을 검색하여 선택한 객체를 제거하는 delete 메소드를 만들었습니다. "호환되지 않는 피연산자 유형 DogList 및 DogItem"arraylist 자바 객체를 삭제하십시오.

어떤 도움이 멋진 것 :

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 --; 
    } 

나는 루프 (gi != dogListArray[i])가 오류를 던지고있는 동안 처음에 왜 주위에 내 머리를 정리하지 못할. 코드가 꽤 길어서 어떤 부분을보고 싶다면 편집하고 필요한 부분을 보여줄 것입니다.

+0

'gi [i]! = dogListArray [i]'가 아니어야합니까? – Checkmate

+3

배열'dogListArray'는'DogItem' 클래스의 객체를 포함합니다. 'DogList'와 비교하려고 할 때, 에러를 반환합니다. –

+1

클래스의 전체 구현을 공유하면 도움이 될 것입니다. –

답변

2

나는 dogListArrayDogItem[]이고, dogListArray[i]DogItem 인 것으로 가정합니다. 나는 그 giDogList 이라기보다는 DogItem 일 것을 의미한다고 생각하니?

별도의 관련 메모에서 == 또는 != 대신 equals 메서드를 사용하여 개체를 비교해야합니다. 이 측면에 대한 설명은 here을 참조하십시오.

관련 문제