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인 채로 남아있기 때문에 무한반복이 생긴다.