Java 扫雷舰代码的问题
我试图用与相邻地雷数量相关的值(数字)填充二维Java 扫雷舰代码的问题,java,oop,arrays,Java,Oop,Arrays,我试图用与相邻地雷数量相关的值(数字)填充二维数组 我的思考过程是将每个单元格与相邻单元格进行比较,但我收到一个越界异常 我一直在尝试几种不同的方法,但我似乎无法理解其中的逻辑。我想把我甩了 游戏板(类) 代码中至少有两个问题 这些行中的第一个 tempRow = (int)(Math.random() * Row); tempColumn = (int)(Math.random() * Column); Math.random()可能返回1.0,因此tempRow将等于Row,这就是问题所在
数组
我的思考过程是将每个单元格与相邻单元格进行比较,但我收到一个越界异常
我一直在尝试几种不同的方法,但我似乎无法理解其中的逻辑。我想把我甩了
游戏板(类)
代码中至少有两个问题
这些行中的第一个
tempRow = (int)(Math.random() * Row);
tempColumn = (int)(Math.random() * Column);
Math.random()
可能返回1.0,因此tempRow
将等于Row
,这就是问题所在,因为最后一个索引是Row-1
(和Column-1
)。所以,让它像
tempRow = (int)(Math.random() * (Row - 1));
tempColumn = (int)(Math.random() * (Column - 1));
另一个问题是循环中的startBoard
for(int i=0 ; i<mines.length ; i++) {
for(int j=0 ; j<mines.length ; j++) {
...
}
}
但这并不是它应该做的,您可以打印值,而不是将它们转换为字符串。最好使用
公共字符串toString()
{
StringBuilder=新的StringBuilder();
builder.append(“\n行\n”);
对于(int i=0;i|
你也可以用它漂亮地打印你的黑板。我正在更新你的问题。。请查看并考虑在StAccOppRoad上重新发布它。将来,如果您的程序引发异常,则可能是堆栈溢出问题。。把stackoverflow想象成问答社区回答世界的try catch
。简言之,它是思想的食粮。。。二维基本类型数组
(即int-mines[x][y]
)应初始化为满容量(即int-mines[][]=new-int[maxColumn][maxRow]
,请记住,列从左到右计数,或从x轴计数,行从上到下计数,或从y轴计数)<代码>用于(int i=0;i
和用于(int j=0;j
。。。另外,您在showMines
中的检查“if(mines[i][j]==“*”””似乎不合适。。
tempRow = (int)(Math.random() * (Row - 1));
tempColumn = (int)(Math.random() * (Column - 1));
for(int i=0 ; i<mines.length ; i++) {
for(int j=0 ; j<mines.length ; j++) {
...
}
}
public String toString()
{
System.out.println("\n Lines");
for(int i = 0 ; i < Row ; i++) {
System.out.print(" " + (i + 1) + " ");
for (int j = 0; j < Column; j++) {
System.out.print(" " + mines[i][j]);
}
System.out.println();
}
return "\n 1 2 3 4 5 6 7 8\n Columns";
}
public String toString()
{
StringBuilder builder = new StringBuilder();
builder.append("\n Lines\n");
for(int i = 0 ; i < Row ; i++) {
builder.append(" " + (i + 1) + " ");
for (int j = 0; j < Column; j++) {
builder.append(" " + mines[i][j]);
}
builder.append("\n");
}
builder.append("\n 1 2 3 4 5 6 7 8\n Columns");
return builder.toString();
}