English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
このチュートリアルでは、例を通じてJavaのcontinue文とcontinueとタグ付けされた文を学びます。
ループを処理する際には、時にはループ内の特定の文をスキップする必要がある場合や、テスト式をチェックせずにループをすぐに終了する必要がある場合があります。
この場合、breakとcontinue文を使用します。break文について理解するには、以下を訪れてくださいJava break.
Javaのcontinue文は、現在のループのイテレーションをスキップします(for、while、do…whileなど)。プログラムの制御権はループの最後に移動し、ループのテスト式を計算します。
forループでは、アップデート文はテスト式の前に実行されます。
continue文はほとんど常に(if ... else文)決定文を使用して。その文法は:
continue;
class Test { public static void main(String[] args) { // forループ for (int i = 1; i <= 10; ++i) { //iの値が4と9の間、continueを実行します if (i > 4 && i < 9) { continue; } System.out.println(i); } } }
出力:
1 2 3 4 9 10
上記のプログラムでは、forループを使用してiの値を各イテレーションで印刷します。forループの動作原理を理解するには、以下を訪れてくださいJava forループここでは、以下の文に注意してください:
if (i > 5 && i < 9) { continue; }
これはiの値が4以下9時、ループ内のprint文をスキップします。したがって、この値をスキップします。5、6、7と8の結果を出力します。
以下のプログラムは、ユーザーが入力する5正の数の合計を計算します。ユーザーが負の数または0を入力した場合、それを計算からスキップします。
ユーザーの入力を受け取るために、このScannerオブジェクトを使用しています。Scannerの詳細については、以下のURLを参照してください。Java Scanner.
import java.util.Scanner; class AssignmentOperator { public static void main(String[] args) { Double number, sum = 0.0; //Scannerオブジェクトを作成します Scanner input = new Scanner(System.in); for (int i = 1; i < 6; ++i) { System.out.print("数字を入力してください: "); //double型のデータ入力を受け取ります number = input.nextDouble(); //numberが負の数の場合、反復をスキップします if (number <= 0.0) { continue; } sum += number; } System.out.println("Sum = ", + sum); } }
出力:
数字を入力してください: 2.2 数字を入力してください: 5.6 数字を入力してください: 0 数字を入力してください: -2.4 数字を入力してください: -3 Sum = 7.8
上記のプログラムでは、以下の行に注意してください:
if (number < 0.0) { continue; }
これはユーザーが負の数を入力した場合、ループの現在の反復をスキップし、次の反復に移行することを意味します。
もしネストされたループ、その場合、continueは最も内側のループの現在の反復をスキップします。
これまで、ラベルが付いていないcontinue文を使用していました。これは最も内側のループとswitch文を終了するために使用されます。しかし、Javaには別の形のcontinue文、ラベル付きcontinue文があります。
上図のように、label識別子を使用して外部ループを指定しています。今、continue文(continue label;)の使用方法に注意してください。
ここでは、continue文は、マークされた文の現在の反復(外部ループ)をスキップします。その後、プログラムのコントロールは、マークされた文の次の反復(外部ループ)に移行します。
class LabeledContinue { public static void main(String[] args) { //外部forループがlabelとタグ付けされています first: for (int i = 1; i < 6; ++i) { for (int j = 1; j < 5; ++j) { if (i == 3 || j == 2) //タグ付きのイテレーションをスキップ(外部forループ) continue first; System.out.println("i = " + i + "; j = " + j); } } } }
出力:
i = 1; j = 1 i = 2; j = 1 i = 4; j = 1 i = 5; j = 1
上記の例では、タグ付けされたfirstのループの現在のイテレーションをスキップするためにタグ付きのcontinue文を使用しています。
if (i==3 || j==2) continue first;
ここでは、最外層のforループがfirstとタグ付けされていることが見られます。
first: for (int i = 1; i < 6; ++i) {..}
したがって、iの値が3またはjの値が2、外部forループのイテレーションをスキップします。
注意:タグ付きのcontinueを使用することは推奨されません。なぜなら、コードが理解しにくくなるからです。タグ付きのcontinueを使用する必要がある場合は、コードをリファクタリングし、読みやすくする方法で解決策を試みてください。