検討してください:
int[][] multD = new int[5][];
multD[0] = new int[10];
これは5行10列の2次元配列を作成する方法ですか。
このコードをオンラインで見ましたが、構文は意味がありませんでした。
以下を試してください。
int[][] multi = new int[5][10];
...これは、次のような簡単な説明です。
int[][] multi = new int[5][];
multi[0] = new int[10];
multi[1] = new int[10];
multi[2] = new int[10];
multi[3] = new int[10];
multi[4] = new int[10];
すべての要素はint
、0
のデフォルト値に初期化されるので、上記も以下と同等です。
int[][] multi = new int[][]{
{ 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 }
};
2次元配列を宣言し、宣言時に要素を直接次のように格納できます。
int marks[][]={{50,60,55,67,70},{62,65,70,70,81},{72,66,77,80,69}};
ここで int は配列に格納された整数型要素を表し、配列名は 'marks'です。配列は同じデータ型を持つ要素の集まりであるため、 int は "{"と "}"の中に表されているすべての要素のデータ型です。
上記のステートメントに戻ります。要素の各行は中括弧で囲む必要があります。行と各行の要素はコンマで区切る必要があります。
ステートメントを見てください。3行5列になるので、JVMは3 * 5 = 15ブロックのメモリーを作成します。これらのブロックは個別に次のように呼ぶことができます。
marks[0][0] marks[0][1] marks[0][2] marks[0][3] marks[0][4]
marks[1][0] marks[1][1] marks[1][2] marks[1][3] marks[1][4]
marks[2][0] marks[2][1] marks[2][2] marks[2][3] marks[2][4]
注意:
n 要素を格納したい場合は、配列インデックスはゼロから始まり n-1 で終わります。 2次元配列を作成するもう1つの方法は、最初に配列を宣言し、次にnew演算子を使用してそれにメモリを割り当てることです。
int marks[][]; // declare marks array
marks = new int[3][5]; // allocate memory for storing 15 elements
上記の2つを組み合わせることで、次のように書くことができます。
int marks[][] = new int[3][5];
他の人が言ったようにそれらを作成することができます。もう1点追加する必要があります。各列に傾斜した2次元配列を作成することもできます。必ずしも同じ数の列を持つ必要はありません。
int array[][] = new int[3][];
array[0] = new int[3];
array[1] = new int[2];
array[2] = new int[5];
5 rowsと 10 columnsを持つ2次元配列を作成するための最も一般的な慣用句は次のとおりです。
int[][] multD = new int[5][10];
代わりに、以下を使用することもできます。これは、各行を明示的に初期化する必要がありますが、実際のものと似ています。
int[][] multD = new int[5][];
for (int i = 0; i < 5; i++) {
multD[i] = new int[10];
}
次のように宣言することも可能です。それは良いデザインではありませんが、うまくいきます。
int[] twoDimIntArray[] = new int[5][10];
試してください:
int[][] multD = new int[5][10];
コードでは、2D配列の最初の行だけが0に初期化されています。2行目から5行目までは存在しません。あなたがそれらを印刷しようとするならば、あなたは彼ら全員のためにnull
を得るでしょう。
Javaでは、2次元配列は1次元配列と同じものとして宣言できます。一次元配列では、次のように書くことができます。
int array[] = new int[5];
ここで、intはデータ型、array []は配列宣言、そしてnew array
は5つのインデックスを持つオブジェクトを含む配列です。
そのように、次のように2次元配列を書くことができます。
int array[][];
array = new int[3][4];
ここでarray
はintデータ型です。最初にそのタイプの1次元配列を宣言した後、3行4列の配列が作成されます。
あなたのコードで
int[][] multD = new int[5][];
multD[0] = new int[10];
つまり、5行の2次元配列を作成したということです。最初の行には10列あります。 Javaでは、必要に応じて各行の列サイズを選択できます。
int [][] twoDim = new int [5][5];
int a = (twoDim.length);//5
int b = (twoDim[0].length);//5
for(int i = 0; i < a; i++){ // 1 2 3 4 5
for(int j = 0; j <b; j++) { // 1 2 3 4 5
int x = (i+1)*(j+1);
twoDim[i][j] = x;
if (x<10) {
System.out.print(" " + x + " ");
} else {
System.out.print(x + " ");
}
}//end of for J
System.out.println();
}//end of for i
int rows = 5;
int cols = 10;
int[] multD = new int[rows * cols];
for (int r = 0; r < rows; r++)
{
for (int c = 0; c < cols; c++)
{
int index = r * cols + c;
multD[index] = index * 2;
}
}
楽しい!
この方法を試してください:
int a[][] = {{1,2}, {3,4}};
int b[] = {1, 2, 3, 4};
これらのタイプの配列は、Javaではギザギザ配列として知られています。
int[][] multD = new int[3][];
multD[0] = new int[3];
multD[1] = new int[2];
multD[2] = new int[5];
このシナリオでは、配列の各行は異なる列数を保持します。上記の例では、1行目に3列、2行目に2列、3行目に5列が格納されます。この配列はコンパイル時に以下のように初期化できます。
int[][] multD = {{2, 4, 1}, {6, 8}, {7, 3, 6, 5, 1}};
配列内のすべての要素を簡単に繰り返すことができます。
for (int i = 0; i<multD.length; i++) {
for (int j = 0; j<multD[i].length; j++) {
System.out.print(multD[i][j] + "\t");
}
System.out.println();
}