试着了解我的代码有什么问题。非常感谢你的帮助:)
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);
}
}
答案 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];
}
}