用Java添加两个矩阵

时间:2014-04-04 21:37:47

标签: java matrix

我试图添加两个矩阵,当编译器尝试调用sum方法时,我得到了异常。

public static void main(String[] args) {

    int[][] a = new int[3][3];
    int[][] b = new int[3][3];

    for (int i = 0; i < a.length; i++)
    {
        for (int j = 0; j < a[0].length; j++)
        {
            a[i][j] = Integer.parseInt(JOptionPane.showInputDialog("Enter a[" + i + "][" + j + "]"));
        }
    }
    for (int i = 0; i < b.length; i++)
    {
        for (int j = 0; j < b[0].length; j++)
        {
            b[i][j] = Integer.parseInt(JOptionPane.showInputDialog("Enter b[" + i + "][" + j + "]"));
        }
    }

我在下一行得到了例外。

    int[][] c = sum(a,b);

    for (int[] row: c)
    {
        for (int e: row)
        {
            System.out.print(e + "\t");
        }
    }

}
public static int[][] sum(int[][] a, int[][] b)
{
    int[][] c = new int[a.length][a[0].length];

    for (int i = 0; i < a.length; i++)
    {
        for (int j = 0; i < a[i].length; j++)
            c[i][j] = a[i][j] + b[i][j];
    }
    return c;
}

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:5)

你的内循环中有一个拼写错误:

for (int j = 0; i < a[i].length; j++)

应该是

for (int j = 0; j < a[i].length; j++)

并导致ArrayIndexOutOfBoundsException,因为j超出了数组的大小。

发生异常时,首先要看的是异常的名称。它通常非常有用。在这种情况下,它告诉我们,我们意外地环绕了太远。如果该名称没有提供信息,我们至少可以找出错误发生的位置。堆栈跟踪包含发生错误的行。如果这些东西都没有帮助/存在,我们可以使用调试器,或者沿途打印调试消息来诊断问题。