猿问

为 2d 数组创建越界随机数行和列

我正在尝试将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

         }

      }

如果代码未中断,则为输出。

Cats萌萌
浏览 106回答 1
1回答

小唯快跑啊

给定您的代码:1&nbsp; &nbsp; for (int i = 0; i < userWords.length; i++) {2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int r = rand.nextInt(60);&nbsp;3&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int c = rand.nextInt(puzzleBoard[r].length - userWords[i].length());4&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int j = 0; j < userWords[i].length(); j++) {5&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 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 backward6&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }7&nbsp; &nbsp; &nbsp; &nbsp; }8&nbsp; &nbsp; }第 5 行中的 值可以很容易地变大于 59,因为其本身已经可以是 59。这样,您的数组将超出范围,因此 .r + jrjava.lang.ArrayIndexOutOfBoundsException: 60您可以用作解决方案,继续在开发板的左侧。(r + j) % 60
随时随地看视频慕课网APP

相关分类

Java
我要回答