Почему я получаю адреса массива вместо значений (двумерный массив) - PullRequest
1 голос
/ 29 марта 2012
  5 import java.util.*;
  6 
  7 class Matrix {
  8     // declare the member field
  9     private int[][] matrix;
 10 
 12     public Matrix(int a, int b, int c, int d) {
 13         matrix = new int[2][2];
 14         matrix[0][0] = a;
 15         matrix[0][1] = b;
 16         matrix[1][0] = c;
 17         matrix[1][1] = d;
 18     }
 19     // identity matrix
 20     public Matrix(char i) {
 21         matrix = new int[2][2];
 22         matrix[0][0] = 1;
 23         matrix[0][1] = 0;
 24         matrix[1][0] = 1;
 25         matrix[1][1] = 0;
 26     }
 27 
 29     public int[][] toPow(int n, int[][] matrix) {
 30         if (n == 1)
 31             return matrix;
 32         else {
 33             int[][] temp = matrix;
 34             for (int i = 0; i < 2; i++) {
 35                 for (int j = 0; j < 2; j++) {
 36                     temp[i][j] += matrix[i][j] * this.matrix[j][i];
 37                 }
 38             }
 39             return toPow(n - 1, temp);
 40         }
 41     }
 42     public int[][] toPow(int n) {
 43         return toPow(n, this.matrix);
 44     }
 45 }
 46 
 47 class Maths {
 48 
 49     public static void main(String[] args) {
 55         Matrix m = new Matrix(1,2,3,4);
 56         System.out.println(Arrays.toString(m.toPow(2)));
 57         System.out.println(Arrays.toString(new int[][] {{1,2},{3,4}}));
 58     }
 59 }

Arrays.toString (Array) должен выводить содержимое массива при вызове.Но когда я попытался напечатать массив в последних 2 строках кода, я получил адреса вместо содержимого.Может кто-нибудь, пожалуйста, помогите мне понять, почему это так?

Ответы [ 4 ]

5 голосов
/ 29 марта 2012

Вы видите результаты вызова toString() для каждого элемента вашего top массива. Но каждый элемент сам по себе является массивом. Используйте Arrays.deepToString() вместо:

System.out.println(Arrays.deepToString(m.toPow(2)));
1 голос
/ 29 марта 2012

Arrays.toString() работает только для одномерных массивов. Попробуйте перебрать строки массива и использовать Arrays.toString() для каждой строки отдельно.

0 голосов
/ 29 марта 2012

Вы можете вызвать Arrays.toString () для каждой строки матрицы или Arrays.deepToString ().

import java.util.Arrays;

public class Test {

   public static void main(String[] args) {
       new Test().run();
    }

    private void run() {
       int[] v = { 1, 2, 3 };
       int[][] m = { { 1, 1, 1 }, { 2, 2, 2 }, { 3, 3, 3 } };
       System.out.println("Printing the array: ");
       System.out.println(Arrays.toString(v));
       System.out.println("Printing the line addresses: ");
       System.out.println(Arrays.toString(m));

       System.out.println("Priting the matrix: ");
       for (int[] l : m) {
          System.out.println(Arrays.toString(l));
        }  

        System.out.println("Priting the matrix (deepToString): ");
        System.out.println(Arrays.deepToString(m));
   }
}

Выход:

Printing the array: 
[1, 2, 3]
Printing the line addresses: 
[[I@3182f0db, [I@b92d342, [I@546b97fd]
Priting the matrix: 
[1, 1, 1]
[2, 2, 2]
[3, 3, 3]
Priting the matrix (deepToString): 
[[1, 1, 1], [2, 2, 2], [3, 3, 3]]
0 голосов
/ 29 марта 2012

Arrays.toString (int []) поддерживает массив (одномерное), а не матрицы (два + измерение)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...