回答:
以下を試してください:
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 }
};
new int[][]
に=new int[][]{...}
変?書け={...}
ますか?
new
キーワードを使用することによってのみオブジェクトに割り当てられます。
int array[][] = new int[3][];
VSはどうint array[][] = new int[][3];
ですか?私はどこかで両方のバージョンを読んだので、どちらが合法か。
2次元配列を宣言し、宣言時に要素を次のように直接格納できます。
int marks[][]={{50,60,55,67,70},{62,65,70,70,81},{72,66,77,80,69}};
ここで、intは配列に格納された整数型の要素を表し、配列名は「マーク」です。配列は同じデータ型の要素のコレクションであるため、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次元配列を作成する別の方法は、最初に配列を宣言してから、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];
int array[][] = new int[3][];
VSはどうint array[][] = new int[][3];
ですか?私はどこかで両方のバージョンを読んだので、どちらが合法か。
5行10列の2次元配列を作成する最も一般的なイディオムは次のとおりです。
int[][] multD = new int[5][10];
別の方法として、各行を明示的に初期化する必要がありますが、次のものを使用することもできます。
int[][] multD = new int[5][];
for (int i = 0; i < 5; i++) {
multD[i] = new int[10];
}
Object[][] ary2d = new Object[5][10];
場合でも、2D配列の各要素を初期化する必要があります。
null
非プリミティブについてケースを安全に処理しない限り。各要素を初期化する必要があるかどうかは、設計に完全に依存します。また、明確にするために、プリミティブをnullにすることはできません。また、プリミティブが割り当てられていない場合、定義済みのデフォルト値にインスタンス化されます。たとえば、int
nullをnullにすることはできません。int i;
値を割り当てずに発声すると、デフォルトの値0
が使用されます。それについてここで読んでください
試してください:
int[][] multD = new int[5][10];
コードでは、2D配列の最初の行だけが0に初期化されることに注意してください。2行目から5行目までは存在していません。あなたがそれらを印刷しようとすると、あなたはnull
彼ら全員のために得るでしょう。
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
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 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];
このシナリオでは、配列の各行は異なる数の列を保持します。上記の例では、最初の行は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();
}
実際、Javaには数学的な意味での多次元配列はありません。Javaが持っているのは、配列の配列であり、各要素は配列でもある配列です。そのため、初期化するための絶対要件は最初の次元のサイズです。残りを指定すると、デフォルト値が入力された配列が作成されます。
int[][] ar = new int[2][];
int[][][] ar = new int[2][][];
int[][] ar = new int[2][2]; // 2x2 array with zeros
それはまた、私たちに癖を与えます。要素を追加してサブ配列のサイズを変更することはできませんが、任意のサイズの新しい配列を割り当てることで変更できます。
int[][] ar = new int[2][2];
ar[1][3] = 10; // index out of bound
ar[1] = new int[] {1,2,3,4,5,6}; // works