2012-01-30 6 views
0

컬렉션이 있고 컬렉션에 양의 정수만 추가 할 수 있도록 add() 메서드를 구현하고 싶습니다. 컬렉션에는 4 개의 값을 저장할 수 있으며 아래 코드를 사용하여 모든 값을 "-1"로 초기화합니다.Java : 컬렉션에서 요소 제거

public class Bag implements Collection { 


private int[] elements; 

public Bag() { 
    elements = new int[Runner.SIZE_OF_COLLECTION]; 
    for (int i = 0; i < Runner.SIZE_OF_COLLECTION; i++) { 
     elements[i] = -1; 
    } 
} 

지금까지 방법 추가 기능에서() 아래에,이 루프 집합 내 각각의 요소를 통해 반복, 내가 ("TOADD"를 추가하고자하는 양의 정수로 0보다 작의 각 요소를 교체이).

문제는, "toAdd"라는 양의 정수를 한 번만 추가하고 루프의 중단없이이 메서드는 컬렉션의 모든 요소 "-1"을 양의 정수로 바꿉니다. 루프가 중단되면이 메서드는 양의 정수를 전혀 추가하지 못합니다. 컬렉션에 양의 정수를 한 번만 추가하는 방법을 얻는 방법에 대한 아이디어가 있습니까?

public void add(int toAdd) { 
    for (int i = 0; i < Runner.SIZE_OF_COLLECTION; i++) { 
     if (elements[i] <= 0 && toAdd>0) { 
      elements[i] = toAdd; 
      } 
         break; 
    } 
} 

미리 감사드립니다.

+0

의심되는 요소 배열이 비어 있습니다. add 메소드 내에서 크기와 내용을 출력 해보십시오. – kosa

+0

제목이 다소 오도 된 것입니다 ... 나는 당신이이 특별한 문제에 대한 디자인 과정에서 조금 더 많은 시간을 소비해야한다고 생각합니다. 또한 러너는 무엇입니까? – Gevorg

+0

러너는 컬렉션의 크기를 설정하는 클래스입니다. 예, 제목에 "제거"하지 않고 컬렉션에 메소드를 추가하는 것을 의미했습니다. – user1178874

답변

1

if 문으로 나누기를 이동하십시오.

+0

이미 시도했지만 긍정적 인 부분을 추가하지 않았습니다. 정수 :(감사합니다! – user1178874

+0

결과는 무엇입니까? -1 모두? Runner.SIZE_OF_COLLECTION의 값을 출력 해보십시오. add() – RussS

+0

예, 모두 -1입니다. – user1178874

0

int 배열 대신 ArrayList를 사용할 수 있습니다. ArrayList를 사용하면 -1의 첫 번째 인덱스를 가져올 수 있고 set 메서드를 사용하여 해당 인덱스에 새 값을 추가 할 수 있습니다.

0

elements의 첫 번째 값 (0보다 작거나 같음)은 toAdd 인수의 값으로 바뀝니다.

public void add(int toAdd) { 
    for (int i = 0; i < Runner.SIZE_OF_COLLECTION; i++) { 
     if (elements[i] <= 0 && toAdd>0) { 
      elements[i] = toAdd; 
      break; 
     }    
    } 
} 
0

인터페이스 Collection의 add 메서드에는 Object (또는 지정하지 않은 제네릭 형식)이 사용됩니다. add 메소드로 콜렉션 인터페이스 메소드를 오버라이드/구현하려고하면 메소드 시그니처가 올바르지 않으며 절대 호출되지 않습니다. 당신은 아마뿐만 아니라 메소드를 추가하지만 진실을 다른 오버라이드 (override) 할 필요가

public class Bag extends java.util.ArrayList<Integer> 
{ 
    @Override 
    public boolean add(Integer i) 
    { 
    if ((i != null) && (i > 0)) super.add(e); 
    } 
} 

을 :

public class Bag implement Collection<Integer> 
{ 
    // ... other necessary methods 

    public boolean add(Integer i) 
    { 
    // your method... 
    } 
} 

그리고 구현이 할 수있는 것보다 더 쉬울 :

클래스는 다음과 같다 필요 ArrayList를 확장하는 대신 캡슐화하는 것이 좋습니다.

+0

감사합니다. 모두들 :) – user1178874