breakとcontinue
反復をスキップしたり終了したりします。
「breakとcontinue」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全4レッスンが含まれています。
ループを制御する理由
ループはコードを繰り返し実行しますが、途中で停止したり、項目を1つスキップしたりしたい場合もあります。
Java には、そのための簡単なツールが2つあります。break はループを完全に終了し、continue は次の繰り返しへスキップします。
このレッスンでは、それぞれが正確にいつ実行され、ループの流れをどのように変えるのかを学びます。
break 文
break キーワードは、最も内側にあるループを直ちに停止します。
実行はループの直後にある最初の行へ移ります。残りの繰り返しはすべて中止されます。
次の例では、i が 3 に達するとすぐにループが停止します。
public class Main {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
if (i == 3) {
break;
}
System.out.println("i = " + i);
}
System.out.println("Done");
}
}break が出力した内容
プログラムは i = 1 と i = 2 を出力してから、Done を出力しました。
i が 3 になったときに break が実行されたため、3、4、5 は出力されませんでした。
必要なものが見つかり、検索を停止したい場合に break は最適です。
continue 文
continue キーワードは、現在の繰り返しの残りの処理をスキップします。
ループ自体は停止しません。ループヘッダーへ戻り、次の値で処理を続けます。
ここでは数値 3 をスキップしながら処理を続けます。
public class Main {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue;
}
System.out.println("i = " + i);
}
}
}continue が出力した内容
出力は 1、2、4、5 でした。値 3 はスキップされましたが、ループは実行を続けました。
これが重要な違いです。break はループから抜けますが、continue は1回分の処理だけをスキップします。
偶数のスキップ
continue の一般的な用途はフィルタリングです。必要のない値をスキップします。
このループでは、数値が偶数になるたびに continue することで、奇数だけを出力します。
public class Main {
public static void main(String[] args) {
for (int i = 1; i <= 8; i++) {
if (i % 2 == 0) {
continue;
}
System.out.println(i);
}
}
}while ループでの break
break と continue は、for、while、do-while のすべてのループ形式で使えます。
この while ループはカウントアップしますが、合計が 10 を超えた瞬間に抜けます。
public class Main {
public static void main(String[] args) {
int total = 0;
int n = 1;
while (true) {
total += n;
if (total > 10) {
break;
}
n++;
}
System.out.println("Stopped at total = " + total);
}
}break が終了するのは1つのループだけ
重要なルールがあります。通常の break が終了するのは、それを囲むループのうち最も内側にあるものだけです。
ループの中に別のループがある場合、break は内側のループから抜けます。外側のループは実行を続けます。
次のネストされた例を注意深く見てください。
public class Main {
public static void main(String[] args) {
for (int row = 1; row <= 3; row++) {
for (int col = 1; col <= 3; col++) {
if (col == 2) {
break;
}
System.out.println("row " + row + ", col " + col);
}
}
}
}ネストされた break の結果
break は内側の列ループだけを停止したため、各行には col 1 だけが出力されました。
外側の行ループは3行すべてについて実行を続けました。
両方のループから同時に抜けるには、ラベル付き break が必要です。これは次のレッスンで学びます。
continue も最も近いループに作用する
break と同様に、通常の continue が作用するのは、それを直接囲むループだけです。
ネストされたループでは、continue は外側のループではなく、内側のループの次の繰り返しへ移ります。
2つのループにまたがるロジックを書くときは、この点を覚えておいてください。
public class Main {
public static void main(String[] args) {
for (int a = 1; a <= 2; a++) {
for (int b = 1; b <= 3; b++) {
if (b == 2) {
continue;
}
System.out.println(a + "-" + b);
}
}
}
}簡単なイメージ
ループを、周回するトラックだと考えてみましょう。
break =トラックを離れて立ち去る。continue =次の周回のスタートラインまで先に進む。
どちらも現在いるトラックにだけ作用し、その外側のトラックには作用しません。
理解度チェック
break と continue の違いについて理解できているか確認しましょう。
まとめ
break は最も近いループを終了し、continue はそのループの次の繰り返しへスキップすることを学びました。
ネストされたループでは、どちらも最も内側のループにだけ作用します。外側のループを制御するにはラベルが必要です。次はラベルについて学びます。
よくある質問
「breakとcontinue」レッスンは無料ですか?
はい。「breakとcontinue」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全4レッスンが含まれています。
「breakとcontinue」で何を学びますか?
反復をスキップしたり終了したりします。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Java Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「breakとcontinue」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJava Academyレッスンでコードを書いて実行できますか?
はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- breakとcontinue
- ラベル付きbreak
- ラベル付きcontinue
- スパゲッティな処理フローを避ける