为了账号安全,请及时绑定邮箱和手机立即绑定

Java矩阵点积ArrayIndexOutOfBoundsException

Java矩阵点积ArrayIndexOutOfBoundsException

慕勒3428872 2021-04-16 19:24:48
我在第66行出现错误c[rowA][colB] = c[rowA][colB] + a[rowA][colA]*b[colA][colB];。我手工浏览了索引,只是无法弄清楚索引出了什么问题。非常感谢您的帮助。package arrayproducts;import javax.swing.JOptionPane;public class ArrayProducts {    public static void main(String[] args) {        String output = "";        int rowA = Integer.parseInt(JOptionPane.showInputDialog("\nEnter the number of rows for MatrixA."));        int colA = Integer.parseInt(JOptionPane.showInputDialog("\nEnter the number of columns for MatrixA."));        int rowB = Integer.parseInt(JOptionPane.showInputDialog("\nEnter the number of rows for MatrixB."));        int colB = Integer.parseInt(JOptionPane.showInputDialog("\nEnter the number of columns for MatrixB."));        if( colA != rowB){            output += "Cannot perform matrix operation: Inner matrix dimensions must agree.";            output += "\nMatrixA has a dimension of "+ rowA + " x " + colA + ".";            output += "\nMatrixB has a dimension of "+ rowB + " x " + colB + ".";            JOptionPane.showMessageDialog(null, output);            return;        } else {            output += "\nDot Product Begin:";            int [][] a = new int[rowA][colA];            output += "\nMatrixA has a dimension of "+ rowA + " x " + colA + ".";            int [][] b = new int[rowB][colB];            output += "\nMatrixA has a dimension of "+ rowB + " x " + colB + ".";            JOptionPane.showMessageDialog(null, output);            int [][] c = new int[rowA][colB];            ////            // enter first matrix            for(int i = 0; i < rowA; i++){                for(int j = 0; j < colA; j++){                    a[i][j] = Integer.parseInt(                        JOptionPane.showInputDialog("\nEnter an integer for MatrixA, row " + (i+1) + " and column " + (j+1) + "."));                }            }
查看完整描述

2 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

我猜你打算在下面的代码中使用索引i,j,k代替rowA,colB等。

c[rowA][colB] = c[rowA][colB] + a[rowA][colA]*b[colA][colB];


查看完整回答
反对 回复 2021-04-28
?
慕村9548890

TA贡献1884条经验 获得超4个赞

我将向您展示一个简单的示例。

int[] a = new int[3];

该平均值a只能有3个值。

a[0], a[1] and a[2]

如果尝试a[3],它将超出范围。

所以。你有

int [][] c = new int[rowA][colB];

并尝试访问c[rowA][colB]超出范围的内容。

在你的三个for循环,我想,你想使用ijk


查看完整回答
反对 回复 2021-04-28
  • 2 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信