While, Break, Continue

정혅·2024년 2월 3일

공부

목록 보기
2/11
post-thumbnail

while문

횟수가 정해져 있지 않고 참 인동안 계속해서 반복한다.

int distance = 25; //전체거리 25m
        int move = 0; //현재 이동 거리 0m
        while (move < distance) { //현재 이동거리가 전체 거리보다 작다는 조건이 참인 동안 반복 수행
            System.out.println("발차기를 계속 합니다.");
            System.out.println("현재 이동 거리 : " + move);
            move += 3; //3미터 이동
            System.out.println();
        }
        System.out.println("도착하였습니다.");

발차기를 계속 합니다.

현재 이동 거리 : move +=3

이렇게 계속 3씩 더해져서 출력되다가 distance값인 25가 되면 "도착하였습니다." 가 출력된다.

move = 0;
height = 25;
distance = 25;
    while (move + height < distance) { 
        System.out.println("발차기를 계속 합니다.");
        System.out.println("현재 이동 거리 :" + move); 
        move += 3;
    }
    System.out.println("-----반복문 #1-----");//*
    System.out.println("도착했습니다."); //*
    System.out.println();

while문의 조건식이 참이 아닌 거짓이 될 경우 조건식을 빠져나와 *문장 출력된다

Do While

move = 0;
    height = 10;
    do {
        System.out.println("발차기를 계속 합니다.");
        System.out.println("현재 이동 거리 : " + move); 
        move += 3;
    } while (move + height < distance); 
    System.out.println("도착했습니다.");

while문의 조건식이 참인동안 do 문장이 실행된다.

조건이 맞지 않아고 무조건 한번은 문장이 실행된다.

  • move + height 이 distance 보다 작은 동안 do 문장이 실행되는데 move에 3씩 더해지면서 move가 12가 되고 이보다 한번 더 실행되면 move + height의 값이 distance와 같아지기 때문에 12에서 조건식을 빠져나와 "도착했습니다"를 출력하게 된다.

Break (for문, while문, do~while)

for문을 이용한 break

int max = 20;
        for(int i = 1; i <= 50; i++) {
            System.out.println(i + "번 손님, 주문하신 음식 나왔습니다.");
            if (i == max) {
                System.out.println("금일 재료가 모두 소진되었습니다.");
                break;
            }
        }
        System.out.println("영업을 종료합니다.");
  • for 문 안에 if 문을 사용하고 if 문이 참이 되었을때 break문 을 이용해 조건문을 벗어나준다.

while문을 이용한 break

int index = 1;
        while (index <= 50) {
            System.out.println(index + "번 손님, 주문하신 치킨 나왔슴다.");
            if(index == max) {
                System.out.println("금일 재료 소진입니당~.");
                break;
            }
            index++;
        }
        System.out.println("영업을 종료함당~");
  • break문을 넣어주지 않으면 index가 max(20)이 되었을때 재료 소진이라고 출력되었다가 21부터 50까지 다시 치킨나왔다고 출력이 된다. break문을 사용해야지만 원하는 조건이 되었을때 조건문을 탈출할 수 있다.

Continue

for문을 이용한 Continue

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

            //손님이 노쇼했다면
            if(i == noShow) {
                System.out.println(i + "번 손님, 노쇼로 인해 다음 손님에게 기회가 넘어갑니다.");
                continue; //*
            }

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

*이 있는 부분을 보면 continue라는 명령어를 사용했는데 이는 continue 이후에 문장들을 수행하지 않고 처음 for문의 i 증감자로 다시 돌아가게 된다.

sold++이 수행되지 않았으니 20번이 아닌 21번 까지로 넘어가게된다.


While문을 이용한 Continue

int index = 1; // 손님 호
		while (index <= 50) {
			System.out.println(index + "번 손님, 주문하신 피자 나왔습니다.");
			
		//손님이 노쇼했다면
			if(index == noShow) {
				System.out.println(index + "번 손님, 노쇼로 인해 다음 손님에게 넘어갑니다.");
				index++; //**
				continue; //*
			}
			
			sold++; //판매 처리
			if(sold == max) {
				System.out.println("금일 재료가 소진되었습니다");
				break;
			}
			index++;
		}
		System.out.println("영업을 종료 합니다.");

for 에서는 continue 이후에 for문의 증감연산자 > 조건식 이 방향으로 돌아갔지만, while에서는 증감확인 없이 while문의 조건식으로 돌아간다.

**에서 index++을 해주는 이유는 continue 이후 문장은 수행되지 않음으로

노쇼 손님의 번호를 포함해 대신 피자를 받는 손님의 번호까지 포함되어야 하므로 continue 전에 증감연산자를 넣어주는 것이다.

index ++연산자가 분산되어 사용하면 나중에 헷갈릴 수 있기 때문에 다음과 같이 사용할 수 있다.

int index = 1; // 손님 번호
		while (index < 50) { // index<50으로 변환시키고
            index++; 
			System.out.println(index + "번 손님, 주문하신 피자 나왔습니다.");
			
		//손님이 노쇼했다면
			if(index == noShow) {
				System.out.println(index + "번 손님, 노쇼로 인해 다음 손님에게 넘어갑니다.");
				continue;
			}
			
			sold++; //판매 처리
			if(sold == max) {
				System.out.println("금일 재료가 소진되었습니다");
				break;
			}
		}
		System.out.println("영업을 종료 합니다.");

while문 안에서 index++을 넣으면 continue를 하든 if문을 하든 앞쪽에서 사용되기때문에 간단하게 볼 수 있다.

0개의 댓글