我有一系列的盒子:

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的相同项。

08-04 04:54