0

以下のコードからの次のステートメントが何を意味するのか、誰でも説明できますか..??

for (j = 0; j < arrayOfInts[i].length; j++)

私はJava言語を学んでいて、それを理解するのに非常に苦労しています..

class BreakWithLabelDemo {
        public static void main(String[] args) {

            int[][] arrayOfInts = { 
                { 32, 87, 3, 589 },
                { 12, 1076, 2000, 8 },
                { 622, 127, 77, 955 }
            };
            int searchfor = 12;

            int i;
            int j = 0;
            boolean foundIt = false;

        search:
            for (i = 0; i < arrayOfInts.length; i++) {
                for (j = 0; j < arrayOfInts[i].length;
                     j++) {
                    if (arrayOfInts[i][j] == searchfor) {
                        foundIt = true;
                        break search;
                    }
                }
            }

            if (foundIt) {
                System.out.println("Found " + searchfor + " at " + i + ", " + j);
            } else {
                System.out.println(searchfor + " not in the array");
            }
        }
    }
4

6 に答える 6

2

Java には実際には多次元配列はありません。他の配列を含むことができる配列があります。そのコードはi、誤解を招く名前の から th 項目を取得しますarrayOfInts。この項目自体が整数の配列であるためlength、この配列の を取得しています。(それは別の配列に格納されていました。)したがって、たとえば次のコードでは:

int[][] array2d = new int[][] {
    new int[] {1},      // stored at array2d[0]
    new int[] {2, 3, 4} // stored at array2d[1]
}

以下は true です。

  • array2d.length == 2(「多次元」配列には、他の 2 つの配列が含まれます。)
  • array2d[0].length == 1(最初の要素には 1 つの要素があります1。)
  • array2d[1].length == 32(2 番目には、3、 の3 つの要素があり4ます。)
于 2013-02-16T13:06:17.593 に答える
1

Java には多次元配列はありません。あるのは配列の配列だけです。

arrayOfIntsこのような int の配列の配列です。intarrayOfInts[i]の配列も同様です。

for (j = 0; j < arrayOfInts[i].length; j++)

この配列のすべての要素を繰り返します。つまり、intiの配列の配列のインデックスに格納されている int の配列のすべての要素を繰り返します。

これは、N 個の小さなボックスを含む大きなボックスとして見ることができます。各小さなボックスには、指定された数の整数が含まれます。arrayOfIntビッグボックスです。arrayOfInt[i]i大きな箱の中で 4 番目に小さい箱です。そして、この小さなボックス内のすべての整数に対してループが繰り返されます。

于 2013-02-16T13:06:09.857 に答える
0

arrayOfInts [i] [j]は、スプレッドシートのような2次元グリッドと考えてください。視覚化に役立てるために、[j]が列インデックスを表し、[i]が行インデックスを表すとします。

説明は次のとおりです。

// iterate through every column j in the current row i:
for (j = 0; j < arrayOfInts[i].length; j++)
于 2013-02-16T13:09:03.133 に答える
0

int [][]arrayOfInts=...
コードで、「これは2次元配列です」という単語を参照してください。
2次元配列は、他の何物でもありませんarrays of arrays
。つまり、通常の1次元配列が多数あり、別の配列には各1次元配列の参照があります。
したがって、行の説明をfor(j=0;j<arrayOfInts[i].length;j++)以下に示します。最初に、 すでに説明した配列の配列である
単語に焦点を当てましょう。したがって、 th配列を指します。単語は、のth配列の長さ(つまり、配列内の要素の数)を返します。 ループは、が1d配列内の要素の数より少なくなるまで発生し続けます(arrayOfInts [i] [0]が最初の要素になるため、以下(等しいを使用しないでください))。arrayOfInts[i].length
arrayOfIntsarrayOfInts[i]iarrayOfInts[i].lengthiarrayOfInts
j

于 2013-02-16T13:16:04.447 に答える
0

Java で実装されている 2 次元配列は、1 次元配列の 1 次元配列です。

for (j = 0; j < arrayOfInts[i].length; j++)

arrayOfInts[i].lengtharrayOfInts の i 番目の行の長さを意味します。

int[][] a = new int[2][4]; 

この 2 次元配列には、2 つの行と 4 つの列があります。これにより、実際には 3 つのオブジェクトが割り当てられます。実際の行配列のそれぞれを保持する 2 つの要素からなる 1 次元配列と、行の内容を表す 4 つの要素からなる 2 つの 1 次元配列です。

 +-----+    +-----+-----+-----+-----+
 |a[0] | -> | [0] | [1] | [2] | [3] |
 |     |    +-----+-----+-----+-----+    In Java two-dimensional arrays are implemented is a  
                                        one-dimensional array of one-dimensional arrays -- like this.
 +-----+
 |     |    +-----+-----+-----+-----+
 |a[1] | -> | [0] | [1] | [2] | [3] |
 +-----+    +-----+-----+-----+-----+
于 2013-02-16T13:05:08.943 に答える
0

j = 0; j < arrayOfInts[i].length

配列が2次元であるため、配列の内部要素は配列になります。

したがって、要素(配列である)arrayOfInts [i]を取得し、長さarrayOfInts [i].lengthを計算します。つまり、次のようになります。

int[] 要素 = arrayOfInts[i]; int の長さ = arrayOfInts[i].length;

于 2013-02-16T13:07:27.473 に答える