6

かなり基本的な質問があります。

例えば:

int a[][] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}} 

3 つの要素があり、各要素には独自の 4 つの要素があるため、[3][4] と呼びます。

しかしどうですか:

int a[][] = {{1},{5,6,7},{9,10,11,12}} 

[3][4]はまだですか?


アップデート

以下の有益なコメントに基づいて、私の最初の例は [3][4] 配列として記述できますが、2 番目の例はそのように示すことはできませんよね?

4

6 に答える 6

6

これらはJagged Arraysと呼ばれ、 Matrixの正式な定義に適合しないため、m 行 n 列とは見なされません。

数学では、行列 (複数の行列) は、行と列に配置された数値、記号、または式の長方形の配列です。

于 2013-08-26T19:08:12.480 に答える
3

ジャワによると

多次元配列は、構成要素自体が配列である配列です。これは、C や Fortran の配列とは異なります。この結果、行の長さを変えることができます。

取ったint a[][]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}

ここでは [3][4] 配列とは言えませんが、3 つの要素があり、各要素には独自の 4 つの要素があると言えます。

int a[][]={{1},{5,6,7},{9,10,11,12}}
ここで、配列には3つの要素があり、各要素には異なる数の要素があると言えます。

于 2013-08-26T19:12:08.300 に答える
2

Android環境でこのテストを行ったところ、おそらくこのケースのシナリオでうまくいくでしょう(私は思う)

int a[][] = { { 1 }, { 5, 6, 7 }, { 9, 10, 11, 12 } };
    for (int i = 0; i < a.length; i++) {
        Log.i("", "i: " + i);
        for (int j = 0; j < a[i].length; j++) {
            Log.i("", "j: " + j);
        }
}

私が得たものは:

i: 0
j: 0
i: 1
j: 0
j: 1
j: 2
i: 2
j: 0
j: 1
j: 2
j: 3

そうでaはありません int[3][4]

于 2013-08-26T19:10:01.547 に答える
0

Java には 2 次元配列はありません。

配列の配列のみが存在し、各配列は異なる長さを持つことができます

行列の場合、線形メモリ レイアウトを検討し、既存のライブラリの 1 つを使用します。

以下は Java で有効であることに注意してください。

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

適切なマトリックス モジュールでは、これが発生しません。

これは強みでもあり弱みでもあります。配列の配列だけが必要なアプリケーションがあります。また、より効率的な場合もあります (たとえば、三角行列の半分のみを格納するなど)。

于 2013-08-26T19:07:57.280 に答える
0

[3][4]ではありません。

外部配列が次元「3」である配列の配列と、可変長の配列要素、つまりそれぞれ 1、3、4 の配列要素。

于 2013-08-26T19:05:19.270 に答える
0

いいえそうではありません。あなたがそのように行くときint[][] test = new int[3][4]、ただの構文糖です。double 配列について魔法のようなことは何もありません。

どちらの例も配列の配列です。あなたの最初のものはたまたま同じ長さの配列をすべて持っていますが、あなたの2番目のものはそうではありません。

余談ですが、大多数の Java プログラマーはint[][] a表記法ではなくint a[][]表記法を使用しています。

于 2013-08-26T19:05:42.013 に答える