为什么我得到数组的地址而不是值(二维数组)

时间:2012-03-29 08:13:28

标签: java arrays multidimensional-array

  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)应该在调用时打印出数组的内容。但是当我尝试在代码的最后两行中打印数组时,我得到的是地址而不是内容。谁能帮助我理解为什么会这样?

4 个答案:

答案 0 :(得分:5)

您会看到在 top 数组的每个元素上调用toString()的结果。但每个元素本身就是一个数组。请改用Arrays.deepToString()

System.out.println(Arrays.deepToString(m.toPow(2)));

答案 1 :(得分:1)

Arrays.toString()仅适用于一维数组。尝试迭代数组的行并分别在每行上使用Arrays.toString()

答案 2 :(得分:0)

Arrays.toString(int [])支持数组(一维),而不支持矩阵(两个+维度)

答案 3 :(得分:0)

您可以为矩阵的每一行或Arrays.deepToString()调用Arrays.toString()。

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]]