Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 扫雷舰代码的问题_Java_Oop_Arrays - Fatal编程技术网

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();
}