1

私のAPコンピューターサイエンスAレビューブックから:

このプログラム セグメントについて考えてみましょう。wordListが として宣言されていると想定できArrayList<String>ます。

for(String s : wordList)
   if(s.length() < 4)
     System.out.println("SHORT WORD");

「SHORT WORD は最大何回印刷できますか?」

この本では、答えは wordList.size() であると書かれていますが、なぜ wordList.size()-1 ではないのでしょうか? ArrayList のインデックスは通常の配列とは異なりますか? 私の本には、インデックスに自動的に追加されることについて何か書かれていますが、私はそれを間違って読んだかもしれません。

4

6 に答える 6

6

この本では、答えは wordList.size() であると書かれていますが、なぜ wordList.size()-1 ではないのでしょうか?

印刷できる最大回数は、すべての単語wordListが4文字未満の場合であるため、印刷できません。

ArrayListの要素数と の有効なインデックスを混同している可能性があると思いますArrayList。Java の配列とLists はゼロから始まるため、 から まで実行さ0list.size() - 1ます。これは、最後の要素が にあることを意味しlist.size() - 1ます。このように考えてください。の数字がある場合0, 1, 2, 3、全部でいくつの数字がありますか? あなたは4つの数字を持っています。ただし、これらの数値がゼロベースの配列に押し込まれた場合、最初の要素は location0にあり、2 番目の要素は location1にあり、最後の要素が location になるまで続きます3

この写真はあなたを助けるかもしれません:

Indices:   0   1   2   3
         +---+---+---+---+
Values:  | 1 | 2 | 3 | 4 |
         +---+---+---+---+
于 2013-05-06T21:32:01.977 に答える
2

もちろん、最大は wordList.size() です。これは、wordList のすべての単語が短い単語である場合に発生します。次に、位置 0 から位置 wordList.size() - 1 (両方を含む) までの wordList は短いです。

于 2013-05-06T21:33:17.180 に答える
1

あなたが尋ねる:

「SHORT WORD は最大何回印刷できますか?」

のすべてのアイテムが の場合wordListlength < 4すべてのアイテムが出力されます。

では、いくつの itens がwordListありますか? シンプル: wordList.size().

ArrayListsize()メソッド セマンティック:

次のような itensArrayListの合計を持つ a で:3

ArrayList wordList = new ArrayList<String>();
wordList.add("firstWord");
wordList.add("2ndWrd");
wordList.add("3w");

size()アイテムの数です ( のようにarray.length)。したがって、この場合、3.

しかしArrayList、 のインデックスは、通常の配列として、0 から始まります(から0size()-1)。そう:

wordList.get(0); // returns "firstWord"
wordList.get(1); // returns "2ndWrd"
wordList.get(2); // returns "3w"
wordList.get(3); // throws an exception (IndexOutOfBoundsException)

したがって、あなたの混乱。

于 2013-05-06T21:38:31.360 に答える