English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 基礎教程

Java フローコントロール

Java 配列

Java 面向オブジェクト(I)

Java 面向オブジェクト(II)

Java 面向オブジェクト(III)

Java 例外処理

Java リスト(List)

Java キュー(キュー)

Java Mapコレクション

Java Setコレクション

Java 入出力(I/O)

Java Reader/Writer

Java 他のトピック

Java continue文

このチュートリアルでは、例を通じてJavaのcontinue文とcontinueとタグ付けされた文を学びます。

ループを処理する際には、時にはループ内の特定の文をスキップする必要がある場合や、テスト式をチェックせずにループをすぐに終了する必要がある場合があります。

この場合、breakとcontinue文を使用します。break文について理解するには、以下を訪れてくださいJava break.

Javaのcontinue文は、現在のループのイテレーションをスキップします(for、while、do…whileなど)。プログラムの制御権はループの最後に移動し、ループのテスト式を計算します。

forループでは、アップデート文はテスト式の前に実行されます。

continue文はほとんど常に(if ... else文)決定文を使用して。その文法は:

continue;

continue文はどのように動作しますか?

Javaのcontinue文のワークフローグラフ

例1:Javaの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の結果を出力します。

例2:Javaのcontinue文

以下のプログラムは、ユーザーが入力する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;
}

 これはユーザーが負の数を入力した場合、ループの現在の反復をスキップし、次の反復に移行することを意味します。

Javaのcontinueとネストされたループ

もしネストされたループ、その場合、continueは最も内側のループの現在の反復をスキップします。

ネストされたループのcontinue文の動作フロー図

ラベル付きcontinue文

 これまで、ラベルが付いていないcontinue文を使用していました。これは最も内側のループとswitch文を終了するために使用されます。しかし、Javaには別の形のcontinue文、ラベル付きcontinue文があります。

Javaでラベル付きcontinue文の動作フロー図

上図のように、label識別子を使用して外部ループを指定しています。今、continue文(continue label;)の使用方法に注意してください。

 ここでは、continue文は、マークされた文の現在の反復(外部ループ)をスキップします。その後、プログラムのコントロールは、マークされた文の次の反復(外部ループ)に移行します。

例3: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を使用する必要がある場合は、コードをリファクタリングし、読みやすくする方法で解決策を試みてください。