我正在嘗試將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
提交
取消