2014-04-04 65 views
1

我试图添加两个矩阵,当编译器试图调用求和方法时出现异常。在Java中添加两个矩阵

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; 
} 

任何人都可以帮助我吗?

+5

异常(栈跟踪)是为了读取。 – keyser

+0

什么是例外?堆栈跟踪会有所帮助。 –

回答

5

你有一个错字在你的内循环:

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

应该

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

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

发生异常时,您首先看到的是异常的名称。它通常非常丰富。在这种情况下,它告诉我们我们不小心打得太远。如果名称不具有信息性,我们至少可以找出发生错误的位置。堆栈跟踪包含发生错误的行。如果这些事情都没有帮助/存在,我们可以使用调试器或者一路打印调试消息来诊断问题。

+0

谢谢。这有帮助 –