0

通常の for ループ宣言しか知りません。これらの for ループが何をしていて、その条件がどのように機能するかを誰か教えてもらえますか?

BufferedReader charSource = Files.newBufferedReader(this.sourcePath, Charset.forName("ISO-8859-2");

BufferedWriter charSink = Files.newBufferedWriter(this.targetPath, Charset.forName("ISO-8859-2");

                for (String line = charSource.readLine(); line != null; line = charSource.readLine()) {
                for (final String element : line.split("\\s")) {
                    if (!element.isEmpty()) {
                        this.streamSorter.write(element);
                        elementCount += 1;
                    }
                }
            }
4

5 に答える 5

5

ここには何も正常ではありません。

  1. String変数を宣言しline、初期化しcharSource.readLine()ます。
  2. line != nullif 、 if false、終了ループをテストします。
  3. 本体を実行します。
  4. line = charSource.readLine()、後藤 2。

2 つ目はfor loop が拡張され、 の任意のインスタンスをループでき、指定された byIterableを使用します。IteratorIterable

于 2013-05-20T18:39:38.847 に答える
2

どちらも明らかに反復しますが、主な違いは、各反復の後に続行する条件を最初にチェックすることです。この場合、readLine() が null を返さない場合。

2 番目は行を文字列のコレクションに分割し、各文字列を反復処理します。

于 2013-05-20T18:40:07.153 に答える
1

最初のものはすべての行を反復し、最後の行の後で反復を停止し ( readLine() returns null)、2 つ目はすべての単語を反復します (コマンドforeachの結果をループしますsplit)。

2 番目のループは、最初のループの結果を使用します。

于 2013-05-20T18:39:52.667 に答える
1

それが for-each ループです。特定のコレクション内の各要素を反復するだけです。コレクション内のすべての要素に到達する最も簡単な方法です。

http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html http://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html

于 2013-05-20T18:40:44.443 に答える