2013-09-20 2 views
1

Я новичок в java, и мне нужно найти сумму 2D-массива, но мой код просто не будет компилироваться. Я получаю ошибки: найденонахождение суммы 2D-массива в java

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()); 
    } 
} 
+0

Wow не знает, почему ошибки отпечатанных как то – user2785079

+5

Вы одномерные массивы, но пытается использовать их, как будто они двумерный. –

+0

В частности, ваш 'a1', объявленный в' main', является двумерным, но поле 'matrix' является одномерным. – chrylis

ответ

5

Проблема заключается в следующем:

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

Java не видит конструктор, который принимает int[][]. Ваш конструктор принимает только int[]. Следовательно, сообщение об ошибке.

Вы хотели бы изменить конструктор (и матричное поле, по этому вопросу), соответственно:

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

Ах, ха! Я знал, что это будет что-то глупое ... Я искал все свои методы :(Спасибо, хотя я ценю это! – user2785079

0

Вы также можете использовать сторонние библиотеки для этого. Например, la4j:

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

System.out.println(a.sum()); // easy-peasy 
Смежные вопросы