1

私は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());
  }
}
4

2 に答える 2

5

問題はこれです:

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

Java は、 を受け入れるコンストラクターを認識しませんint[][] コンストラクターは のみを受け入れますint[]。したがって、エラーメッセージ。

それに応じて、コンストラクター (およびマトリックス フィールド) を変更する必要があります。

int[][] matrix;
Matrix(int[][] matrix) {
    this.matrix = matrix;
}
于 2013-09-20T01:44:13.700 に答える
0

これにはサードパーティのライブラリを使用することもできます。たとえば、la4j :

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

System.out.println(a.sum()); // easy-peasy
于 2013-09-20T03:52:24.780 に答える