对于参数类型int,int [],运算符+未定义

时间:2017-01-19 19:59:55

标签: java int arguments undefined operator-keyword

试着了解我的代码有什么问题。非常感谢你的帮助:)

public class lab5 {
public static void main(String[] args) {
    int[][] m = new int[5][5];

    for (int i = 0; i < m.length; i++) {
        for (int j = 0; j < m[i].length; j++) {
            m[i][j] = i + j;
            System.out.println(m[i][j] + " ");
        }
        System.out.println();
     }
    int sum = 0;
    for (int i = 0; i < m.length; i++)
        sum = sum + m[i];    **// here i get error "The operator + is undefined for the argument type(s) int, int[]"**
    double average = sum / m.length;

    System.out.println("Average value of array element is " + average);

}

}

2 个答案:

答案 0 :(得分:1)

m是一个二维数组。

m[i]是一维数组。

如果参数是数字(+)和1维数组(sum),则

m[i]运算符没有意义。

更新:计算二维数组的平均值,需要有两个(嵌套)循环。就像你已经在程序的第一部分已有的一样。

int sum = 0;
int count = 0;
for (int i = 0; i < m.length; i++) {
    for (int j = 0; j < m[i].length; j++) {
        sum = sum + m[i][j];
        ++count;
    }
}
double average = ((double) sum) / count;

上面的代码占jagged arrays,但处理integer overflows

这里有一个修改过的功课:) 尝试简化上面的代码,删除count变量(如果二维数组是矩阵而不是锯齿状数组,则可以执行此操作)。

尝试正确处理可能的整数溢出(提示:将sum的类型更改为大于int的内容)。

答案 1 :(得分:1)

如果要计算数组的总和,则需要2个for循环。 试试这个:

for (int i = 0; i < m.length; i++) {
  for (int j = 0; j < m[i].length; j++) {
    sum = sum + m[i][j];
  }
}