2013-11-20 3 views
0

Вам нужно добавить матрицы. Это не работает, и я не знаю, как это исправить! Ниже перечислены две введенные мной матрицы.Добавление метода матриц. Двойной массив. Java

Когда я выдаю код, я получаю местоположение в ОЗУ вместо добавленных матриц.

Я не уверен, где это пошло не так! Я был бы признателен за помощь! Спасибо! : D

public static double[][] add(double[][] a1, double [][] a2) 
{ 
    for (int r = 0; r<a1.length; r++) 
    { 
     for (int c = 0; c<a1[r].length; c++) 
     { 
      a1[r][c] = a1[r][c] + a2[r][c]; 
     } 

    } 
    return a1; 
} 

public static void main(String[] args) 
{ 
    double [][] arr = {{1,3,4}, 
           {2,0,1}}; 

    double [][] arr1 = {{0,0,2}, 
           {5,6,7}}; 

    System.out.println(Matrix.add(arr, arr1)); 
} 

ответ

3

Вы звоните Println на массив, и вы видите на toString() возвращенное массива. Не делай этого. Либо используйте Arrays.deepToString(...), либо используйте цикл for для итерации по массиву, распечатывающего результаты.

, например, в псевдокоде,

double[][] result = Matrix.add(...); 
for go through rows 
    for go through columns 
    println the array item in the result array at row, column index 
+0

Arrays.toString не работает. Это дает место в ОЗУ для arr и arr1. – user2990722

+1

'Arrays.toString' не будет работать для двухиндексированного массива. Он вернет конкатенацию результата 'toString()' каждого компонента, который не будет лучше, чем то, что сейчас печатает OP. –

+0

@ user2990722: см. Править. Также существует метод 'deepToString (...)'. –

0

Вы не печатая его должным образом. Попробуйте это (протестирована и работает):

public static double[][] add(double[][] a1, double [][] a2) 
{ 
    for (int r = 0; r<a1.length; r++) 
    { 
     for (int c = 0; c<a1[r].length; c++) 
     { 
      a1[r][c] = a1[r][c] + a2[r][c]; 
     } 
    } 
    return a1; 
} 

public static void main(String[] args) 
{ 
    double [][] arr1 = {{1,3,4},{2,0,1}}; 
    double [][] arr2 = {{0,0,2},{5,6,7}}; 
    double[][] sumMatrix = add(arr1,arr2); 

    for (double r[] : sumMatrix) 
    { 
     for (double c : r) 
      System.out.print(c + ", "); 

     System.out.println("" + '\n'); 
    } 
} 
Смежные вопросы