Java矩阵乘法遇ArrayIndexOutOfBoundsException异常求助
矩阵乘法ArrayIndexOutOfBoundsException异常排查与解决
异常原因
问题出在结果矩阵的打印循环里:
你创建的结果矩阵c是row1行、col2列的(符合矩阵乘法规则:m×n 乘 n×p 得到 m×p),但打印时错误地用了col1和row2作为循环边界。
比如测试2×3与3×4的矩阵乘法:
row1=2,col2=4,所以c是2行4列- 但打印循环写的是
for(int i=0;i<col1;i++)(col1=3)、for(int j=0;j<row2;j++)(row2=3)
当循环到i=2时,c[2][...]就会超出c的行数(只有0、1两行),直接触发ArrayIndexOutOfBoundsException。
而同阶矩阵(比如3×3)时,row1=col1=row2=col2=3,循环边界刚好匹配,所以不会报错。
解决办法
把打印结果矩阵的循环边界,改成用结果矩阵c的实际行列数,也就是row1和col2:
修正后的打印代码片段:
System.out.println("Below is the result matrix: \n"); for(int i=0;i<row1;i++) { for(int j=0;j<col2;j++) { System.out.print(c[i][j] + " "); // 加空格让矩阵格式更清晰 } System.out.println(""); }
内容的提问来源于stack exchange,提问作者m98a
相关产品推荐
相关产品推荐

