2012-01-30 64 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; 
    } 
} 

至今Add方法(下),我有這個遍歷集合中的每個元素進行迭代,並更換每一個與我想補充(「TOADD」的正整數是小於0元)。

問題是,我只想添加正整數「toAdd」一次,並且在循環中沒有中斷,該方法用正整數替換集合中的EVERY元素「-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

我懷疑元素數組是空的。嘗試打印出添加方法內的大小和內容。 – kosa 2012-01-30 20:50:33

+0

標題有點誤導......我相信你可能不得不在設計過程中多花一點時間來解決這個問題。另外,什麼是亞軍? – Gevorg 2012-01-30 20:52:58

+0

Runner是設置集合大小的類,是的,我在標題中的意思是「添加」方法到集合,而不是「去除」 – user1178874 2012-01-30 20:56:34

回答

1

將中斷移入if語句。

+0

已經嘗試過,並且它仍然不會讓我添加一個積極的整數:(謝謝雖然! – user1178874 2012-01-30 20:44:36

+0

結果是什麼?所有-1?嘗試打印Runner.SIZE_OF_COLLECTION的值在add() – RussS 2012-01-30 20:46:46

+0

是啊,全是-1 – user1178874 2012-01-30 20:53:09

0

您可以使用ArrayList而不是int數組。使用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方法覆蓋/實現集合接口方法,那麼方法簽名不正確,並且永遠不會調用它。

類別需要的樣子:

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

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

而且可能更容易比你的實現是要做到:

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

你可能需要重寫其他添加方法爲好,但如實,封裝ArrayList而不是擴展它會更好。

+0

我明白了!謝謝大家:) – user1178874 2012-01-30 22:46:31