我对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)
答案 0 :(得分:1)
您希望matrix.length
获取行数,而不是matrix[0].length
和matrix[1].length
,这将为您提供两次列数(第一行和第二行中的列数) )。你的矩阵的维数为[2] [4],但你的循环就像[4] [4]那样。
将其视为一个数组数组(因为它就是这样)。例如,矩阵
1 2
3 4
实际上是
[[1,2],[3,4]]
外部数组有两个元素(“行”数)。