2013-05-04 114 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());

是不是更容易先做好检查,然后将其添加到现有的列表?