4.1.5 while繰り返し制御文

14458 ワード

while文も括弧内実行文を繰り返し実行する繰り返し制御文であり、括弧内条件式が成立すると繰り返しが続く.
🔅while文の構成
초기식; // 필수는 아니지만 대부분 사용
while(조건식) { // 조건식 : while 문 안으로 들어가는 유일한 입구로 생략 불가능
실행 구문;  // 조건식이 true인 동안 실행
증감식; // 필수는 아니지만 대부분 사용
}
ここで,初期式と増減式は不要なときに省略できるが,for文と比較するために基本構文構造に含める.ここで注意しなければならないのは、初期式はwhile文の実行前に定義され、増減式はfor文と同じ操作を実行するために括弧内にある必要があります.初期式をカッコで囲むと、反復のたびに初期化され、望ましくない無限ループに陥る可能性があります.
🔅無効なサンプルの使用(無限ループの作成)
int a = 0;
while (a < 10) {
a = 0; // 초기식
System.out.println("A"); // 실행 구문(무한 반복 출력)
a++; // 증감식
}
while文の実行順序は、まず条件式をチェックし、条件式がtrueの場合はカッコ内の実行文を実行します.その後、閉じたカッコに遭遇した場合、条件式を再確認し、条件式が偽になるまで上記の手順を繰り返します.条件式が偽の場合、while文は逃げます.したがって、for文と同様に、while文が終了する時点は、閉じたカッコではなく条件式です.以上の過程を以下にまとめる.
ステップA:条件式(真)->構文の実行
ステップB:かっこ->条件式(真)->構文の実行
...
ステップC:かっこを閉じる->条件式(偽)->終了
一般的にwhile文は、主に、重複回数が不確定な場合に特定の条件を繰り返す場合に使用されます.たとえば、while文を使用して、自然数が順番に加算された後、合計が初めて100より大きい場合の数値と合計を知りたい場合に使用します.
🔅while文の一般的な使用例
int num = 0, sum = 0;
while(sum < 100) {
sum += num;
num++;
}
System.out.println((num-1) + "까지의 합 = " + sum); // 14까지의 합 = 105
もちろん、for文のように、繰り返し回数を指定する場合にも使用できます.while文も無限ループではない場合、指定した繰返し回数を実行するには、初期式、条件式、増減式を含まなければなりません.while文とfor文はいつでも相互に変換できます.違いは、初期式と増減式の作成位置にあります.
🔅while文とfor文の相互変換
for ( 초기식 ; 조건식 ; 증감식 ) {
실행 구문; 
}

초기식 ; 
while(조건식) {
실행 구문;
증감식;
}
🔅while文とfor文の相互変換例
for(int a = 0; a < 10; a++) {
System.out.println(a);

int a = 0;
while(a < 10) {
System.out.println(a);
a++;
}
文条件式にtrueを追加すると、文は常に開いているため、実行文は無限に繰り返されます.ただし、for文とは異なり、while文は条件式を省略することはできません.
🔅while文で作成された無限ループ
while(true) { // -> 조건식 생략 불가능 
실행 구문;
}
ここで説明したように、無限に繰り返した後に実行コードを記述すると、条件式にfalseを入力しても、カッコ内の実行コードに類似のエラーが発生します.
🔅while文が到達できないコードを記述するときにエラーが発生した例
while(true) {
실행 구문;
}
실행 구문;

while(false) {
실행 구문;
}

実習

     // while의 기본 문법 구조
        int a = 0;
        while(a < 10) {
            System.out.print(a + " ");
            a++;
        }
        System.out.println();

        //for 문으로 전환
        for(int i = 0; i < 10; i++) {
            System.out.print(i + " ");
        }
        System.out.println();

        int b = 10;
        while(b > 0) {
            System.out.print(b + " ");
            b--;
        }
        System.out.println();

        //for 문으로 전환
        for(int i = 10; i > 0; i--) {
            System.out.print( i + " ");
        }

        //while 문으로 만든 무한 루프
        /*
        while(true) {
        System.out.println("무한 루프");
        }
         */
        System.out.println();

        //무한 루프 탈출
        int c = 0;
        while(true) {
            if(c > 10) {
                break;
            }
            System.out.print(c + " ");
            c++;
        }
結果