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