【问题标题】:The operator + is undefined for the argument type(s) int, int[]运算符 + 未定义参数类型 int, int[]
【发布时间】:2017-06-04 16:10:06
【问题描述】:

只是想了解我的代码有什么问题。非常感谢您的帮助:)

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

}

}

【问题讨论】:

  • 错误信息说明了一切。您正在尝试添加一个int 值和一个数组,这当然是因为m[i] 的值是一个子数组。

标签: java int arguments undefined operator-keyword


【解决方案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];
  }
}

【讨论】:

    【解决方案2】:

    m 是一个二维数组。

    m[i] 是一维数组。

    如果参数是数字 (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 的类型)。

    【讨论】:

    • 如何解决?我刚开始java,我真的不知道如何让它正常工作
    • 您能解释一下预期的结果吗?您想计算m 矩阵的所有项的平均值吗?或者你想要某一行的平均值?还是您想要分别取每一行的平均值?
    • 一般来说,您必须提供 2 个索引才能从 2-dim 数组中获取整数值。例如。 m[i][0] 会给你一个数字(而不是一个数组),你可以将它添加到 sum。但该计划的意图尚不清楚......
    • 对 m 的所有项目进行平均,我猜是矩阵(我的任务听起来像是计算数组元素的平均值)
    猜你喜欢
    • 1970-01-01
    • 2018-06-30
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2014-06-02
    相关资源
    最近更新 更多