3-2. 조건문 Switch-Case

codinghoon·2021년 6월 16일
0

java-basic

목록 보기
11/13
post-thumbnail

✅ 조건문: Switch-Case

package conditional;

public class SwitchCaseTest1 {
    public static void main(String[] args) {
        int num1 = 20;
        int num2 = 10;
        char operator = '/';

        switch (operator) {
            case '+':
                System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));
                break;
            case '-':
                System.out.println(num1 + " - " + num2 + " = " + (num1 - num2));
                break;
            case '*':
                System.out.println(num1 + " * " + num2 + " = " + (num1 * num2));
                break;
            case '/':
                System.out.println(num1 + " / " + num2 + " = " + (num1 / num2));
                break;
            default:
                System.out.println("잘못된 연산자입니다.");
        }
    }
}

[실행 결과]
20 / 10 = 2

▶ 비교 조건이 수식이 아닌, 숫자, 문자, 혹은 문자열인 경우에 사용한다.

▶ 조건식이 많아지는 경우에는 다량의 else-if문을 사용하는 것 보다,
하나의 switch-case문을 사용하는 것이 가독성이 좋다.

▶ case문에서는 중괄호({})를 사용하지 않는다.

▶ case문에서 실행할 문장이 종료되면 switch-case문을 빠져나갈 수 있도록 case문의 끝에는 반드시 break문을 사용해야 한다.

▶ 비교 값과 일치하는 조건이 없다면 default문이 실행된다.

▶ else if문과 마찬가지로 switch-case문 역시,
조건을 만족하는 경우에는 나머지 조건을 비교하지 않고 조건문을 빠져나온다.

여기서 잠깐!

'+' 기호를 사용하여 문자열과 값을 연결할 수 있습니다.
추후 '문자열' 파트에서 자세히 다룰 내용입니다 😊

package conditional;

public class SwitchCaseTest2 {
    public static void main(String[] args) {
        /**
         * 전(前) 예제에서 break문을 사용하지 않는 경우
         */
        int num1 = 20;
        int num2 = 10;
        char operator = '-';

        switch (operator) {
            case '+':
                System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));
            case '-':
                System.out.println(num1 + " - " + num2 + " = " + (num1 - num2));
            case '*':
                System.out.println(num1 + " * " + num2 + " = " + (num1 * num2));
            case '/':
                System.out.println(num1 + " / " + num2 + " = " + (num1 / num2));
            default:
                System.out.println("잘못된 연산자입니다.");
        }
    }
}

[실행 결과]
20 - 10 = 10
20 * 10 = 200
20 / 10 = 2
잘못된 연산자입니다.

▶ break문을 사용하지 않는 경우, 원치 않은 결과가 출력되지 않을 수 있다.

▶ 문자형 변수 operator에는 '-'가 대입되어 있으므로 첫 번째 case문을 실행하지 않고, 두 번째 case문을 실행한다. 하지만, break문이 존재하지 않기 때문에 이후의 세 번째 case문, 네 번째 case문, 심지어 default문까지 실행이 된다.


✅ 효율적으로 case문, break문 활용하기

package conditional;

public class SwitchCaseTest3 {
    public static void main(String[] args) {
        /**
         * 열두 달 각각의 날짜 수를 출력하는 프로그램
         */
        int month = 2;
        int day;

        switch (month){
            case 1: case 3: case 5: case 7: case 8: case 10:
                day = 31; break;
            case 2:
                day = 28; break;
            case 4: case 6: case 9: case 11:
                day = 30; break;
            default:
                day = -1;
        }

        System.out.println(month + "월은 " + day + "일까지 있습니다.");

    }
}

[실행 결과]
2월은 28일까지 있습니다.

▶ 하지만, 위 예제와 같이 조건은 다르지만 실행하는 문장이 같은 경우에는 여러 개의 case문을 동시에 나열하고, 마지막 case문에만 break문을 작성한다.

0개의 댓글