Coord ArrayLists应该都具有相同的大小

时间:2016-10-01 01:02:47

标签: java arraylist iteration

在类似炸弹人的益智游戏中,这些线路是为了确定投放炸弹的最佳位置(在两个板条箱之间)。这是一个13 * 11的网格。

当我检查2个物体的大小时,放置X的那个远远大于另一个。 它们应该具有相同的尺寸,每个坐标X与他的Y一起出现。

由于第一个最好的动作是在同一个Y轴上,我怀疑第二个arraylist不会创建一个新的空间来存储它们(但它是ArrayList而不是Set so?)。

ArrayList<Integer> bestSpotX=new ArrayList<Integer>();    
ArrayList<Integer> bestSpotY=new ArrayList<Integer>();
// ...
for (int line=0, col=0;line<11 && col<13;line++, col++) {    
    if ((map[line].charAt(col)=='0')&&(map[line+2].charAt(col)=='0')) {
    bestSpotX.add(col);
    bestSpotY.add(line+1);
    }    
}

我的迭代是假的,还是我添加coord值的方式?

1 个答案:

答案 0 :(得分:0)

为什么:

ArrayList<Integer> bestSpotX=new ArrayList<Integer>();    
ArrayList<Integer> bestSpotY=new ArrayList<Integer>();

而不是:

class LineColLocation {
  protected int line, col;

// constructors, setters and getters
}

ArrayList<LineColLocation> bestSpots=new ArrayList<LineColLocation>();    


int bestSpotLine=...; // ... whatever logic to ...
int bestSpotCol=...;  // determine a *best spot*

LineColLocation bestSpot=new LineColLocation(bestSpotLine, bestSpotCol);
bestSpots.add(bestSpot);

这样你就不会意外地弄乱same number of X and Y in two different lists的**隐含要求* - 你只是实现了这个约束(明确表示),不需要验证这个约束,你和& #39;每次你都可以把事情搞砸了。