Denny Code 2023. 3. 12. 15:31

while 문이란?

while 문은 for 문과 같은 반복문이다. 하지만 이 둘은 차이가 있다. while 문은 for문과 다르게 초기화식이나 증갑식이 없다. for 문은 몇번을 반복해야하는지 정확하게 조건이 정해져 있는 반면 while 문은 횟수에 제한이 없다. 하지만 조건에 따라서 반복실행을 할지 반복실행 도중 멈출지 의도에 집중하는 "반복 조건에 주목한 반복문" 이다.

그렇기 때문에 자칫 무한 루프에 빠질 수도있다. 즉, 끊임없이 반복문이 돌수 있는 risk 가 있다. 그래서 항상 멈춰줄 조건문을 잘 생각해야 한다.

 

코드 실습

1. 구구단

public static void main(String[] args) throws Exception {

    int dan = 2;
    int i = 1;

    while(dan < 4) {
        System.out.printf("%d 곱하기 %d 는? %d %n", dan, i, dan * i);
        if(i == 9) {
            dan++;
            i = 1;
            System.out.println("================================");
        }
        i++;
    }
}

 

 

 

while 문의 조건을 설정하여 구구단은 2단, 3단만 출력되게 처리하였다.

 

while 문 내부 로직에 if 문을 추가해 9까지 곱하기가 진행되면 다음단으로 넘어가도록 처리해주었다.

 

 

 

 

 

 

 

 

2. while문 컨트롤 - continue; break;

일전에 for문에서도 사용한것 처럼 while문에서도 continue; 를 사용해 반복실행시 특정 로직을 스킵할 수 있다. 또한 break; 를 통해서 while 문의 반복문 실행을 중단할 수 있다.

public static void main(String[] args) throws Exception {

    int value = 1;
    int 술래 = 2;

    while(true) {
        System.out.println("while 문 실행");

        if(value == 술래) {
            System.out.println("      ------- " + value + " 술래 O");
            value++;
            continue; // 아래 로직 스킵하고 다음 반복문 실행.
        }
        System.out.println("      ------- " + value + " X");
        if(value == 5) {
            break; // 반복문 중지.
        }
        value++;
    }
}

 

 

continue; 를 사용하여 value 의 값이 술래 값과 같을때 술래 O 을 출력하고 아래 로직은 스킵한다음 다음 반복문 round로 넘긴다.

 

그리고 value 값이 5가 됐을때 break; 를 사용해 해당 while 반복분을 중지시킨다.

 

break; 문이 없다면 무한 루프에 빠진다.