2012-03-29 8 views
1
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(配列)は、配列の内容をプリントアウトする必要があります。しかし、コードの最後の2行に配列を印刷しようとすると、コンテンツの代わりにアドレスが取得されます。誰でも私がなぜそれが理解できるように助けてくれますか?なぜ私が代わりに値(2次元配列)の配列のアドレスを取得しています

答えて

5

配列の各要素にtoString()という呼び出し結果が表示されています。しかし、各要素はそれ自身配列です。代わりにArrays.deepToString()を使用してください:

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

Arrays.toString()は、1次元配列に対してのみ機能します。配列の行を繰り返し処理し、各行にArrays.toString()を別々に使用してみてください。

0

Arrays.toString(int型[])配列(一次元)ではなく、行列をサポートしています(2 +次元)

0

あなたは、各ラインのための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: 
[[[email protected], [[email protected], [[email protected]] 
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]] 
関連する問題