2013-05-04 158 views
-2

我遇到問題。我正在爲魚編寫一個生態系統的代碼,並且正在嘗試向現有的魚ArrayList添加一個新的Fish對象。但是,當我檢查ArrayList結果是空的?思考?未添加到ArrayList的Java對象

public void addFish(Fish f){ 
    ArrayList<Fish> fishplusone = new ArrayList<Fish>(fish.size()); 
    if (landscape[f.getRow()][f.getCol()] != ROCK) { 
     for (Fish otherfish: this.fish) { 
       if(otherfish.getRow() == f.getRow() && otherfish.getCol() == f.getCol()) { 
        throw new IllegalFishPositionException(IllegalFishPositionException.TWO_FISH_IN_ONE_PLACE); 

       } 
       else { 
        fishplusone.add(otherfish); 
        } 
       fishplusone.add(f); 
       fish = fishplusone; 
       } 

      } 
+1

請編輯您的帖子,以便明智地縮進,並刪除無關的代碼。理想情況下,您應該展示一個簡短但完整的程序來展示問題。例如,我們不知道'fish'變量是什麼。 – 2013-05-04 17:17:06

+1

也許'landscape [f.getRow()] [f.getCol()]'是一個'ROCK'或'this.fish'是空的(假設你沒有得到任何異常)。 – assylias 2013-05-04 17:17:55

+0

它是否總是拋出異常? – 2013-05-04 17:18:15

回答

0

您創建一個新的ArrayList每次:ArrayList<Fish> fishplusone = new ArrayList<Fish>(fish.size());

是不是更容易先做好檢查,然後將其添加到現有的列表?