简单的java练习出错

时间:2013-11-29 23:35:55

标签: java

我对java很新,我在解决一个非常简单的练习时遇到了问题。 我对不同的非OO编程语言有很好的了解,所以错误可能就是我使用object的方式。

我想计算矩阵中所有偶数元素的总和。

这是我的代码:

public class start_problem4 {
        /**
     * @param args
     */
    public static void main(String[] args) {
        int[][] foo = new int[][] {
            new int[] { 1, 2, 3, 4},
            new int[] { 1, 2, 3, 4},
        };
    Matrix m=new Matrix(foo);
    System.out.println("the number is"+m.sumOfEvenNumbers());
    }
}


public class Matrix {

 private int[][] matrix;
 public Matrix(int[][] array)
 {
    matrix = array;
 }


 /**
  * Gets the sum of all the even numbers in the matrix
  * @return the sum of all the even numbers
  */
 public int sumOfEvenNumbers()
 {
         // TODO: Return the sum of all the numbers which are even
     int i,j,sum;
     sum=0;

     for(i=0;i<matrix[0].length;i++)
         for(j=0;j<matrix[1].length;j++)
             {
                System.out.println("i="+i+"  j="+j);
                if(matrix[i][j]%2==0)
                    sum=sum+matrix[i][j];
            }
     return sum;
 }

}

我收到了这个错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
    at Matrix.sumOfEvenNumbers(Matrix.java:24)
    at start_problem4.main(start_problem4.java:17)

1 个答案:

答案 0 :(得分:1)

您希望matrix.length获取行数,而不是matrix[0].lengthmatrix[1].length,这将为您提供两次列数(第一行和第二行中的列数) )。你的矩阵的维数为[2] [4],但你的循环就像[4] [4]那样。

将其视为一个数组数组(因为它就是这样)。例如,矩阵

1 2
3 4

实际上是

[[1,2],[3,4]]

外部数组有两个元素(“行”数)。