반응형

break문

  • 자신이 포함된 하나의 반복문을 벗어난다.

예제를 통해 break를 확인해 보자.

[Ex4_16]

public class Ex4_16 {

    public static void main(String[] args){
        int sum = 0;
        int i = 0;

        while(true) {
            if(sum > 100)
                break;
            i = i+1;
            sum = sum + i;
        } // end of while
        System.out.println("i=" + i);
        System.out.println("sum=" + sum);
    }
}

[실행 결과]

i=14
sum=105

while(true)는 조건식이 항상 참이므로 무한 반복문이다.
그래서  break를 통해 종료를 설정해 주었는데,
위의 코드의 경우, sum이 100을 초과하면 break문이 수행되도록 하여 while문을 벗어나도록 하였다.

 


 

continue문

  • 자신이 포함된 반복문의 끝으로 이동 - 다음 반복으로 넘어감

예제를 통해 continue를 확인해 보자.

[Ex4_17]

public class Ex4_17 {

    public static void main(String[] args) {
        for(int i = 0; i <= 10; i = i + 1) {
            if (i % 3 == 0)
                continue;   // 조건식이 참이 되어 continue문이 수행되면 블럭의 끝으로 이동한다. break문과 달리 반복문을 벗어나지 않는다.
            System.out.println(i);
        }
    }
}

[실행 결과]

1
2
4
5
7
8
10

continue문이 수행되면, 블럭의 끝으로 이동한다. 반복문을 벗어나는 것은 아니다.

아래의 예제를 추가로 확인해 보자.

[Ex4_18]

import java.util.*;

public class Ex4_18 {

    public static void main(String[] args) {
        int menu = 0;
        int num = 0;

        Scanner scanner = new Scanner(System.in);

        while(true) {
            System.out.println("(1) square");
            System.out.println("(2) square root");
            System.out.println("(3) log");
            System.out.println("원하는 메뉴(1~3)를 선택하세요. (종료:0)>");

            String tmp = scanner.nextLine();        // 화면에서 입력받은 내용을 tmp에 저장
            menu = Integer.parseInt(tmp);           // 입력받은 문자열(tmp)을 숫자로 변환

            if(menu == 0) {
                System.out.println("프로그램을 종료합니다.");
                break;
            } else if ( !(1 <= menu && menu <= 3)) {
                System.out.println("메뉴를 잘못 선택하셨습니다.(종료는 0);");
                continue;
            }
            System.out.println("선택하신 메뉴는" + menu + "번입니다.");
        }
    }
}

메뉴를 선택하는 예제인데,
메뉴는 1~3을 선택할 수 있다. 1~3의 메뉴를 선택하면 해당 메뉴를 출력해주며 추가 메뉴를 선택할 수 있도록 반복문이 실행된다.
그런데, 0을 입력하면 메뉴 선택을 종료하며 반복문을 빠져나간다.
근데, 만약 1~3이외의 값을 입력하게 되면 "메뉴를 잘못 선택하셨습니다.(종료는 0)"이라는 문구를 보여주며 다시 반복문이 실행된다.

메뉴를 잘못 선택했을 때, continue문이 사용된다.

 


 

이름 붙은 반복문

  • 반복문에 이름을 붙여서 하나 이상의 반복문을 벗어날 수 있다.

break; 문은 딱 하나의 반복문만 빠져나오게 되어있다.
그런데, 중첩 반복문을 벗어나야할 경우도 있다. 그럴때는 어떻게 할까? 

반복문에 이름을 붙이고, break문 뒤에다가 벗어날 반복문들의 이름을 적어준다. 그러면 반복문이 중첩되어 있어도 한번에 벗어날 수 있다.

for문 앞에 이름을 붙여준다. 그러면, break문 뒤에 해당 for문의 이름을 적어주면, 해당 for문까지 break로 벗어난다. 

즉, 둘 이상의 반복문을 벗어날 때는,
반복문 앞에 이름을 붙히고, 그다음에 break할 반복문의 이름을 적어주면 된다.

이러한 방법은 continue뒤에도 사용할 수 있긴 한데, continue문에 사용할 일은 거의 없다.(쓸 수 있다는 정도만 알아두자)

 

[Ex4_20]

import java.util.*;

public class Ex4_20 {

    public static void main(String[] args) {
        int menu = 0, num = 0;
        Scanner scanner = new Scanner(System.in);

        outer:  // while문에 outer라는 이름을 붙인다.
        while(true) {
            System.out.println("(1) square");
            System.out.println("(2) square root");
            System.out.println("(3) log");
            System.out.print("원하는 메뉴(1~3)를 선택하세요. (종료:0)>");

            String tmp = scanner.nextLine();    // 화면에서 입력받은 내용을 tmp에 저장
            menu = Integer.parseInt(tmp);       // 입력받은 문자열(tmp)을 숫자로 변환

            if (menu==0) {
//                System.out.println("프로그램을 종료합니다.");
                break;
            }else if (!(1 <= menu && menu <= 3)){
                System.out.println("메뉴를 잘못 선택하셨습니다.(종료는 0)");
                continue;
            }
            for(;;) {   // 무한 반복문
                System.out.print("계산할 값을 입력하세요. (계산 종료:0, 전체 종료:99)>");
                tmp = scanner.nextLine();   // 화면에서 입력받은 내용을 tmp에 저장
                num = Integer.parseInt(tmp);    // 입력받은 문자열(tmp)을 숫자로 변환

                if(num == 0)
                    break;  // 계산 종료. for문을 벗어난다.
                if (num == 99)
                    break outer;    // 전체 종료. for문과 while문을 모두 벗어난다.

                switch(menu) {
                    case 1:
                        System.out.println("result="+ num*num);
                        break;
                    case 2:
                        System.out.println("result=" + Math.sqrt(num));
                        break;
                    case 3:
                        System.out.println("result=" + Math.log(num));
                        break;
                }
            }   // for(;;)
        }   // while의 끝
        System.out.println("프로그램이 종료되었습니다.");
    }   // main의 끝
}

[실행 결과]

(1) square
(2) square root
(3) log
원하는 메뉴(1~3)를 선택하세요. (종료:0)>1
계산할 값을 입력하세요. (계산 종료:0, 전체 종료:99)>2
result=4
계산할 값을 입력하세요. (계산 종료:0, 전체 종료:99)>0
(1) square
(2) square root
(3) log
원하는 메뉴(1~3)를 선택하세요. (종료:0)>2
계산할 값을 입력하세요. (계산 종료:0, 전체 종료:99)>2
result=1.4142135623730951
계산할 값을 입력하세요. (계산 종료:0, 전체 종료:99)>0
(1) square
(2) square root
(3) log
원하는 메뉴(1~3)를 선택하세요. (종료:0)>3
계산할 값을 입력하세요. (계산 종료:0, 전체 종료:99)>3
result=1.0986122886681096
계산할 값을 입력하세요. (계산 종료:0, 전체 종료:99)>99
프로그램이 종료되었습니다.
반응형

'JAVA' 카테고리의 다른 글

배열의 길이, 배열의 초기화  (0) 2022.03.22
배열의 생성과 선언, 배열의 인덱스  (0) 2022.03.21
while문, do-while문  (0) 2022.03.20
중첩 for문  (0) 2022.03.20
for문  (0) 2022.03.19