我正在尝试将String数组对角地放入2d char数组中。我在生成随机数范围时遇到问题,因此它将出现在2D数组的索引中。我的代码有效,但有时会中断,并给出“ java.lang.ArrayIndexOutOfBoundsException:60”。
useWords是用户输入的String数组,而puzzleBoard是60行30列的二维数组。
for (int i = 0; i < userWords.length; i++) {
int r = rand.nextInt(60);
int c = rand.nextInt(puzzleBoard[r].length - userWords[i].length());
for (int j = 0; j < userWords[i].length(); j++) {
puzzleBoard[r+j][c+j] = userWords[i].charAt(j); // -j-j = dia right backward || +j+j= dia right forward || -j+j dia forward || +j-j dia backward
}
}
这是输出如果代码没有中断。
答案 0 :(得分:0)
给出您的代码:
1 for (int i = 0; i < userWords.length; i++) {
2 int r = rand.nextInt(60);
3 int c = rand.nextInt(puzzleBoard[r].length - userWords[i].length());
4 for (int j = 0; j < userWords[i].length(); j++) {
5 puzzleBoard[r+j][c+j] = userWords[i].charAt(j); // -j-j = dia right backward || +j+j= dia right forward || -j+j dia forward || +j-j dia backward
6 }
7 }
8 }
第5行中r + j
的值很容易变得大于59,因为r
本身已经可以是59。那样,您的数组将变得越界,因此{{1 }}。
您可以使用java.lang.ArrayIndexOutOfBoundsException: 60
作为解决方案,以继续在板子的左侧。