2016-03-22 6 views
1

編集:たぶん3次元配列ですか?私はArrayListを使いたくない。2次元配列のJavaで2つの数字

私はこれが基本的だと知っていますが、私はまだ配列の周りを頭で囲むのに問題があります。

0 1 2 3 
0   
1   
2   
3 
4 
5 
6 

そして、私は2つの数値を入れたい各スポットで:だから私はこのような7行4列の2次元配列を作成します。私はforループ経由でそれをすべてに(2,5)を埋めるためにしようとしていた場合たとえば、

0  1  2  3 
0 (1, 8) (2, 7) (3, 6) (4, 5)  
1   
2   
3 
4 
5 
6 

は一例として、私はどうなる:これは権利ではありません

int[][][2] table = new int[7][4][2]; 
for (int i = 0; i < 7; i++) { 
    for (int j = 0; i < 4; j++) { 
    table[i][j][1] = 2; 
    table[i][j][2] = 5; 
    } 
} 

。私はそれを行う方法を理解することはできません。 また、正しいときに特定のセルを参照するにはどうすればよいですか? 最初の例のように、私が望むなら(1,8)、table [1] [1]? もし私が1だけを望むなら、私はテーブルを置くだろうか?テーブル[1] [1] [1]?

+0

を使用すると、各要素に2つの数字をしたい場合配列の 'Pair 'のようなオブジェクト型が必要です。 –

+0

ArrayListを使用せずに同様のことを行うことはできますか?たぶん3次元アレイですか? – bov25

+0

'Pair [] []'を作ることができます。 –

答えて

1

あなたはあなたのコード内に3つの誤りがあります。

int[][][2] table = new int[7][4][2]; // <== Remove 2 
for (int i = 0; i < 7; i++) { 
    for (int j = 0; i < 4; j++) { // <== Change i to j 
     table[i][j][1] = 2;   // <== Arrays are zero-based 
     table[i][j][2] = 5;   // <== - 
    } 
} 

修正したコードは次のとおりです。System.out.println(Arrays.deepToString(table))

int[][][] table = new int[7][4][2]; 
for (int i = 0; i < 7; i++) { 
    for (int j = 0; j < 4; j++) { 
     table[i][j][0] = 2; 
     table[i][j][1] = 5; 
    } 
} 

テスト生成:指定された値で更新するには

[[[2, 5], [2, 5], [2, 5], [2, 5]], [[2, 5], [2, 5], [2, 5], [2, 5]], [[2, 5], [2, 5], [2, 5], [2, 5]], [[2, 5], [2, 5], [2, 5], [2, 5]], [[2, 5], [2, 5], [2, 5], [2, 5]], [[2, 5], [2, 5], [2, 5], [2, 5]], [[2, 5], [2, 5], [2, 5], [2, 5]]] 

、あなたを3番目の配列を置き換えることも、値を直接更新することもできます。ここで私は最初の2を更新するには、両方の方法を示しています。

int[][][] table = new int[7][4][2]; 

table[0][0] = new int[] { 1, 8 }; 

table[0][1][0] = 2; 
table[0][1][1] = 7; 
[[[1, 8], [2, 7], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]]] 

あなたも、一度の操作で全体の最初の行を置き換えることができます。

int[][][] table = new int[7][4][2]; 
table[0] = new int[][] { {1, 8}, {2, 7}, {3, 6}, {4, 5} }; 
[[[1, 8], [2, 7], [3, 6], [4, 5]], [[0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]]]