Java 如何打印二维阵列?

Java 如何打印二维阵列?,java,Java,我需要打印这个数组,用于我为APCS编写的tic tac toe程序。我收到一个数组索引OutofBoundsException String[][] ticBoard = { {"-","-","-"}, {"-","-","-"}, {"-","-","-"} }; for(int d = 0; d < ticBoard.length; d++){ for(int r = 0; r < ti

我需要打印这个数组,用于我为APCS编写的tic tac toe程序。我收到一个
数组索引OutofBoundsException

    String[][] ticBoard = {
        {"-","-","-"},
        {"-","-","-"},
        {"-","-","-"}
    };

    for(int d = 0; d < ticBoard.length; d++){
        for(int r = 0; r < ticBoard.length; d++){
            System.out.print(ticBoard[d][r]);
        }
    }
String[]ticBoard={
{"-","-","-"},
{"-","-","-"},
{"-","-","-"}
};
对于(int d=0;d
您应该像@Maroun Maroun所说的那样,将d++更改为r++,但是:

    for(int d=0; d<ticBoard.length;d++){
       for(int r = 0; r<ticBoard[d].length;r++){
           System.out.print(ticBoard[d][r]);
       }
       System.out.println();
    }

对于(int d=0;d您应该将d++更改为r++,就像@Maroun Maroun所说的那样,但是:

    for(int d=0; d<ticBoard.length;d++){
       for(int r = 0; r<ticBoard[d].length;r++){
           System.out.print(ticBoard[d][r]);
       }
       System.out.println();
    }

for(int d=0;d您在内部循环中使用了错误的限制;您应该使用行的长度,而不是列的数量。(由于二维数组的行数和列数不同,这一点尤其明显。)

因此,当您尝试访问第4个元素时,您将离开数组第一行的末尾。您的代码为
ticBoard.length
(即4)的列索引指定了一个最大值,该值与该行中的实际项数(即3)不对应

这可以通过循环到行中的元素数(即
ticBoard[d].length
)而不是数组中的行数(即
ticBoard.length
)来解决

此外,您在内部循环中增加了错误的值;它应该是
r
,而不是
d

for(int d = 0; d < ticBoard.length; d++) {
    for(int r = 0; r < ticBoard[d].length; r++) {
        System.out.print(ticBoard[d][r]);
    }
    System.out.println(); // So that each new row gets its own line
}
for(int d=0;d
您在内部循环中使用了错误的限制;应该使用行的长度,而不是列的数量。(由于二维数组的行数和列数不同,这一点尤其明显。)

因此,当您尝试访问第4个元素时,您将离开数组第一行的末尾。您的代码为
ticBoard.length
(即4)的列索引指定了一个最大值,该值与该行中的实际项数(即3)不对应

这可以通过循环到行中的元素数(即
ticBoard[d].length
)而不是数组中的行数(即
ticBoard.length
)来解决

此外,您在内部循环中增加了错误的值;它应该是
r
,而不是
d

for(int d = 0; d < ticBoard.length; d++) {
    for(int r = 0; r < ticBoard[d].length; r++) {
        System.out.print(ticBoard[d][r]);
    }
    System.out.println(); // So that each new row gets its own line
}
for(int d=0;d
这个

for(int r = 0; r < ticBoard.length; d++){
这个,


只需将内部循环中的
d++
更改为
r++
。请注意,尽管它可以工作,但如果行数不同,它可能会失败。内部循环应该分别在每一行上运行,
ticBoeard[d]
表示您正在迭代的行。
for(int r=0;rOr use
System.out.println(Arrays.deepToString(ticBoard))
请注意,即使在更改为
r++
后,您的代码也只适用于二维正方形数组。这是因为您让
D
从0到行数减1,然后让
r
也从0到行数减1,而不是列数。最好是
r
。此外,您可能希望打印每行后转到下一行。只需将内部循环中的
d++
更改为
r++
。请注意,尽管它可以工作,但如果行数不同,它可能会失败。您的内部循环应该分别在每行上运行,
ticBoeard[d]
表示您正在迭代的行。
for(int r=0;rOr使用
System.out.println(Arrays.deepToString(ticBoard))
请注意,即使在更改为
r++
后,您的代码也只适用于二维正方形数组。这是因为您让
D
从0到行数减1,然后让
r
也从0到行数减1,而不是列数。最好是
r
。此外,您可能希望打印每行后转到下一行。噢,感谢您指出我以为我放了r++。感谢您对它的帮助。噢,感谢您指出我以为我放了r++。感谢您对它的帮助。噢,感谢您指出我以为我放了r++。感谢它的帮助。