While 반복문

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

public class _06_While {
    public static void main(String[] args) {
        // 반복문 While (25m 레인은 발차기를 몇 번해야 갈 수 있냐?)
        // 우선 수영장에서 수영을 하는 모습을 상상해보자
        int distance = 25; // 전체 거리는 25m
        int move = 0; // 현재 이동 거리: 0m
        while (move < distance) { // 현재 이동 거리가 전체 거리보다 작다는 조건이 참인 동안 반복 수행
            System.out.println("발차기를 계속 합니다.");
            System.out.println("현재 이동 거리 : " + move);
            move += 3; // 3미터 이동
        }
        System.out.println("도착하였습니다.");

        // 무한 루프
        move = 0;
        while (move < distance) { // 현재 이동 거리가 전체 거리보다 작다는 조건이 참인 동안 반복 수행
            System.out.println("발차기를 계속 합니다.");
            System.out.println("현재 이동 거리 : " + move);
        }
        System.out.println("도착하였습니다.");
        // 0이 25보다 작으니까 sout문 2개를 실행하고, 다시 돌아왔을 때 move는 계속 0이므로
        // 무한하게 반복한다. 
    }
}

결과

발차기를 계속 합니다.
현재 이동 거리 : 0
발차기를 계속 합니다.
현재 이동 거리 : 3
발차기를 계속 합니다.
현재 이동 거리 : 6
발차기를 계속 합니다.
현재 이동 거리 : 9
발차기를 계속 합니다.
현재 이동 거리 : 12
발차기를 계속 합니다.
현재 이동 거리 : 15
발차기를 계속 합니다.
현재 이동 거리 : 18
발차기를 계속 합니다.
현재 이동 거리 : 21
발차기를 계속 합니다.
현재 이동 거리 : 24
도착하였습니다.

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
32
33
34
35
36
37
38
// While 문
 
public class _11_Continue {
    public static void main(String[] args) {
        // Continue
        // 치킨 주문 손님 중에 노쇼 손님이 있다고 가정
 
        int max = 20// 최대 치킨 판매 수량
        int sold = 0// 현재 치킨 판매 수량
        int noShow = 17// 대기번호 17번 손님이 노쇼.
        
 
        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("영업을 종료합니다.");
    }
}
cs

만약 indexx++를 쓰지 않는다면...?

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
32
33
34
35
36
37
38
// While 문
 
public class _11_Continue {
    public static void main(String[] args) {
        // Continue
        // 치킨 주문 손님 중에 노쇼 손님이 있다고 가정
 
        int max = 20// 최대 치킨 판매 수량
        int sold = 0// 현재 치킨 판매 수량
        int noShow = 17// 대기번호 17번 손님이 노쇼.
        
 
        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("영업을 종료합니다.");
    }
}
cs

continue를 만나면 밑에 있는 문장이 수행되지 않고 다음 반복으로 넘어가기 때문에 꼭 써줘야한다. 1을 더해주는 index++를 써주지 않으면 계속 17인 채로 남아있기 때문에 무한반복이 생긴다.

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

0개의 댓글