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)를 써놓고 그 밑에 탈출할 조건을 쓰는 경우.