1.break
声明
前のレッスンの例を見てみましょう。
コード | 説明 |
---|---|
|
プログラムは、 と入力されるまで、キーボードから行を読み取ります"exit" 。 |
プログラムは、単語が入力されるまでコンソールから行を読み取りますexit
。この単語を入力すると、isExit
変数は となりtrue
、ループ条件は となり、ループが終了します。」!isExit
false
Java には、break
そのようなロジックを簡素化できる特別なステートメントがあります。break
ステートメントがループ内で実行される場合、ループはただちに終了します。プログラムはループに続くステートメントの実行を開始します。声明は非常に簡潔です:
break;
このステートメントを使用して、break
先ほど説明した例を書き直す方法は次のとおりです。
コード | 説明 |
---|---|
|
プログラムは、 と入力されるまで、キーボードから行を読み取ります"exit" 。 |
2. continueステートメント
しかし、break
ループの動作を制御できる Java ステートメントはこれだけではありません。Java にもこのcontinue
ステートメントがあります。continue
ループ内でステートメントを実行すると、ループの現在の反復が予定より早く終了します。
ループ本体を 1 回実行することをループの反復と呼びます。このcontinue
ステートメントはループの現在の反復を中断しますが、break
ステートメントとは異なり、ループ自体は終了しません。声明も簡潔に述べている:
continue;
このcontinue
ステートメントは、ループ内で特定の状況でループ本体の実行を「スキップ」したい場合に非常に便利です。
1
タスク:から までの数値を出力し20
、 で割り切れる数値をスキップするプログラムを作成したいと考えています7
。このコードは次のようになります。
コード | 説明 |
---|---|
|
プログラムは から1 までの数字を表示します20 。数値が で割り切れる場合7 (割り算の余りが7 ) 0 、数値の表示をスキップします。 |
実際には、このコードは機能しません。i
永久にその番号に留まることになるからです7
。結局のところ、このcontinue
ステートメントは他の 2 つのステートメント (System.out.println(i)
と )をスキップしますi++
。その結果、 value に到達すると7
、変数はi
変更を停止し、無限ループに陥ります。
この非常によくある間違いを説明するために、意図的にこのようにコードを作成しました。どうすれば修正できますか?
ここには 2 つのオプションがあります。
オプション 1:i
を実行する前に変更しますcontinue
が、その後に変更します。i % 7
オプション 2:i
ループの先頭で常にインクリメントします。ただし、i
の開始値は でなければなりません0
。
オプション1 | オプション 2 |
---|---|
|
|
GO TO FULL VERSION