我有一系列的盒子:
class Box {
int x1, y1, x2, y2;
}
假设我们需要创建一个盒子表。
Box[][] table;
我知道盒子的大小、宽度和桌子的高度。这是我做桌子的方法。
public Box[][] table(int boxSize, int xBound, int yBound) {
Box[][] boxes = new Box[xBound / boxSize][xBound / boxSize];
for (int x = 0; x < xBound; x += boxSize) {
for (int y = 0; y < yBound; y += boxSize) {
boxes[x % xBound / boxSize][y % yBound / boxSize] = new Box(x, y, x + boxSize, y + boxSize);
}
}
return boxes;
}
但问题是
reminder
如果我们需要将表格宽度设置为24,高度设置为22,并将方框大小设置为5,那么我们将得到ArrayIndexOutOfBoundsException
如果存在提醒,我想为它创建一个小框并将其添加到表中。[0-5, 0-5] | [5-10, 0-5] | [10-15, 0-5] | [15-20, 0-5] | [20-24, 0-5]
...
[0-5, 20-22] | ...
我该怎么做?
最佳答案
设置如下框的数量:
Box[][] boxes = new Box[(xBound - 1) / boxSize + 1][(yBound - 1) / boxSize + 1];
然后,在创建每个框时,请选中
x + boxSize
不大于xBound
,并选中y
的相同项。