我正在尝试将String数组对角线放入2d字符数组中。我在生成随机数的范围时遇到问题,因此它将位于我的2D数组的索引中。我的代码可以工作,但有时它会中断,给出一个“java.lang.ArrayIndexOutOfBoundsException:60”。useWords 是用户输入的字符串数组,puzzleBoard 是 60 行和 30 列的 2d 数组。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 } }如果代码未中断,则为输出。
1 回答
小唯快跑啊
TA贡献1863条经验 获得超2个赞
给定您的代码:
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 行中的 值可以很容易地变大于 59,因为其本身已经可以是 59。这样,您的数组将超出范围,因此 .r + jrjava.lang.ArrayIndexOutOfBoundsException: 60
您可以用作解决方案,继续在开发板的左侧。(r + j) % 60
添加回答
举报
0/150
提交
取消