Continue

이윤설·2023년 1월 21일
0
package chap_04;

public class _11_Continue {
    public static void main(String[] args) {
        // Continue
        // 치킨 주문 손님 중에 노쇼 손님이 있다고 가정

        int max = 20; // 최대 치킨 판매 수량
        int sold = 0; // 현재 치킨 판매 수량
        int noShow = 17; // 대기번호 17번 손님이 노쇼.
        for (int i = 1; i <= 50; i++) {
            System.out.println(i + "번 손님, 주문하신 치킨 나왔습니다.");

            // 손님이 노쇼라면?
            if (i == noShow) {
                System.out.println(i + "번 손님, 노쇼로 인해 다음 손님에게 기회가 넘어갑니다.");
                continue;
                // continue를 만나면 바로 (밑이 아니라) 위로 간다. 따라서 판매처리에 카운트되지 않는다.
            }

            sold++; // 판매 처리
            if (sold == max) {
                System.out.println("금일 재료가 소진되었습니다.");
                break;
            }
        }
        System.out.println("영업을 종료합니다.");

        System.out.println("--------------------");
        // While 문
        sold = 0;
        int index = 1; // 손님 번호
        while (index <= 50) {
            System.out.println(index + "번 손님, 주문하신 치킨 나왔습니다.");

            // 노쇼가 있었다면
            if (index == noShow) {
                System.out.println(index+ "번 손님, 노쇼로 인해 다음 손님에게 기회가 넘어갑니다.");
                index++; // continue를 만나게 되면 밑에 있는 문장이 수행되지 않고 다음 반복으로 넘어가기 떄문에 꼭 써준다.
                continue;
            }

            sold++; // 판매 처리
            if (sold == max) {
                System.out.println("금일 재료가 모두 소진되었습니다.");
                break;
            }
            index++; // fori와는 다르게 while문은 수동으로 ++을 해줘야함.
        }
        System.out.println("영업을 종료합니다.");
    }
}

index++를 두번 쓸 필요 없이 쓸 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package chap_04;
 
public class _11_Continue_2 {
    public static void main(String[] args) {
        // 더 편리한 코드
        int max = 20;
        int noShow = 17;
        int sold = 0;
        int index = 0// 손님 번호
        // while (index < 50) {
        while (true) {
            index++;
            System.out.println(index + "번 손님, 주문하신 치킨 나왔습니다.");
 
            // 노쇼가 있었다면
            if (index == noShow) {
                System.out.println(index+ "번 손님, 노쇼로 인해 다음 손님에게 기회가 넘어갑니다.");
                continue;
            }
 
            sold++// 판매 처리
            if (sold == max) {
                System.out.println("금일 재료가 모두 소진되었습니다.");
                break;
            }
        }
        System.out.println("영업을 종료합니다.");
    }
}
 
 
cs

1.index를 0으로 초기화 한다.
2.while문 뒤에 index++;를 써준다. 이 문장을 만나면 첫번째 손님은 1번이 된다.
3.while 조건도 (index < 50)으로 함께 바꿔준다. 그러지 않으면 대기 손님이 총 51명이 된다.
4.손님이 노쇼일 경우, continue를 만나도 다음 반복(line11)하면서 ++이 될 것이다. 손님이 있었다면, 명령을 실행하고(line21) 다음 반복(line11)을 할 것 이기 때문에 index++을 한번만 써도 된다.
5.break를 만나면 바로 탈출한다. 따라서 while (index < 50) { 을 굳이 안써도 된다. while (index < 50) { 조건형으로서, 그 조건을 만족하면 반복문을 탈출한다.

반대로 while (true) { 를 쓰면 무한반복에 빠지게 되는데, line21~24 처럼 특정 조건이 됐을 때 break를 만나서 반복문을 탈출하게 해놨기 때문에 while (true)를 써도 된다.


간단 요약
while 반복은 두개로 나눌 수 있다.
a. 특정 조건을 초기에 설정 ex. while(index <= 50) { }
b. while(true)를 써놓고 그 밑에 탈출할 조건을 쓰는 경우.

profile
화려한 외면이 아닌 단단한 내면

0개의 댓글