Java二维数组生成0、1随机数时出现数组下标越界异常的问题求助
解决Java二维数组随机填充时的数组越界异常
嘿,我一眼就揪出你代码里的问题啦!你碰到的ArrayIndexOutOfBoundsException完全是因为内层循环的判断条件写错了,咱们来慢慢捋清楚:
问题根源
看你内层循环的这段代码:
for (int j = 0; i< matrix.length;j++)
这里你误用了控制行的变量i来限制列循环的范围!内层循环本该遍历当前行的列数,也就是matrix[i].length,结果你写成了总行数的判断条件i < matrix.length。这样j会一直无脑递增,直到超出当前行的列数上限,自然就触发数组越界异常了。
修正后的完整代码
把内层循环的判断条件改成j < matrix[i].length就彻底解决问题了,修正后的代码如下:
import java.util.Random; import java.util.Scanner; public class Test { public static void main(String[] args) { Random r = new Random(); Scanner input = new Scanner(System.in); System.out.println("Enter number of rows"); int row = input.nextInt(); System.out.println("Enter number of columns"); int column = input.nextInt(); int matrix [][] = new int[row][column]; for(int i = 0; i< matrix.length;i++){ // 核心修正:把i<matrix.length改成j<matrix[i].length for (int j = 0; j < matrix[i].length;j++) { matrix[i][j] = r.nextInt(2); System.out.print(matrix[i][j]+ " "); } System.out.println(); } input.close(); // 顺手加了关闭Scanner的代码,避免资源泄漏~ } }
内容的提问来源于stack exchange,提问作者Khaled Alharbi
相关产品推荐
相关产品推荐

