【问题标题】:finding the sum of a 2D array in java在java中找到二维数组的总和
【发布时间】:2013-09-20 01:41:06
【问题描述】:

我是 java 新手,我必须找到一个 2D 数组的总和,但我的代码根本无法编译。我不断收到错误:

发现 3 个错误:

File: C:\Users\Brett\Documents\DrJava\Matrix.java  [line: 9]
Error: length cannot be resolved or is not a field
File: C:\Users\Brett\Documents\DrJava\Matrix.java  [line: 10]
Error: The type of the expression must be an array type but it resolved to int
File: C:\Users\Brett\Documents\DrJava\Matrix.java  [line: 15]
Error: The constructor Matrix(int[][]) is undefined

我不知道如何解决它们,在此先感谢您的帮助!

public class Matrix {
  int[] matrix;
  Matrix(int[] matrix) {
    this.matrix = matrix;
  }
  int sum() {
    int sum = 0;
    for (int i = 0; i < matrix.length; i++)
      for (int j = 0; j < matrix[i].length; j++)
      sum += matrix[i][j];
    return sum;
  }
  public static void main(String[] args) {
    int[][] a1 = { { 1, 2 }, { 3, 4 } };
    Matrix m1 = new Matrix(a1);
    System.out.println(m1.sum());
  }
}

【问题讨论】:

  • 哇不知道为什么会这样打印错误
  • 你有一个一维数组,但试着像二维一样使用它们。
  • 具体来说,您在main 中声明的a1 是二维的,但您的matrix 字段是一维的。

标签: java arrays matrix compiler-errors


【解决方案1】:

问题是这样的:

int[][] a1 = { { 1, 2 }, { 3, 4 } };
Matrix m1 = new Matrix(a1);

Java 看不到接受int[][] 的构造函数。您的构造函数只接受int[]。因此,错误消息。

您可能希望相应地更改您的构造函数(和矩阵字段):

int[][] matrix;
Matrix(int[][] matrix) {
    this.matrix = matrix;
}

【讨论】:

  • 啊哈!我知道这会很愚蠢......我正在寻找我的方法:(谢谢你,虽然我很感激!
【解决方案2】:

您也可以为此使用第三方库。例如la4j:

Matrix a = new Basic2DMatrix(new double[][] {
  { 1.0, 2.0 },
  { 3.0, 4.0 }
});

System.out.println(a.sum()); // easy-peasy

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-16
    • 2018-05-14
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2013-09-13
    相关资源
    最近更新 更多