我目前开始了解Java。因此,当我尝试开发一些扫雷应用程序时,我注意到,当尝试向“ Mines []”数组中添加坐标时,调试窗口将打开,并且我的应用程序不会继续显示目标的Minefield。

这就是我的代码:

package com.ochs.minesweeper;

public class MineField {

public Mine[] mines;

public MineField(int xMines, int yMines) {
    mines = new Mine[xMines*yMines];
    int xCounter = 0;
    int yCounter = 0;
    for(int i = 0; i < yMines; i++) {
        for(int j = 0; j < xMines; j++) {
            mines[i*j].setX(xCounter);
            mines[i*j].setY(yCounter);
            xCounter += 100;
        }yCounter += 100;
    }
}
}


即使当我只是尝试类似的东西:

for(int i = 0; i < xMines*yMines; i++) {
    mines[i].setX(2);
}


或类似的东西似乎我无法在数组中使用for循环的变量来处理...

有人知道我在做什么错吗?我只希望我的MineField拥有Mine []数组。这些地雷都是在for循环中使用不同的坐标创建的,因此可以在我的Surfaceview的网格中显示它们。
有人有主意吗?也许是另一个解决方案,在我的示例矿井中,如何创建简单的对象网格?

提前致谢!

最佳答案

为什么不使用二维数组?您可以定义Mine[][] mines,然后在循环中:

 for(int i = 0; i < yMines; i++) {
        for(int j = 0; j < xMines; j++) {
            mines[i][j].setX(xCounter);
            mines[i][j].setY(yCounter);
            xCounter += 100;
        }yCounter += 100;
    }

10-07 19:43
查看更多