한모로그 2023. 1. 15. 14:52

변수값에 따라 case를 실행하는 switch 문

  • switch 문: 괄호 안의 변수값에 따라 해당 case로 가서 실행문을 실행.
  • 변수값과 동일한 값을 갖는 case가 없으면 default로 가서 실행문을 실행하며, default 생략 가능


    출처, 이것이 자바다



package ch04.sec03;

/*
 * IfDiceExample 클래스의 주사위 예제를 switch문으로 변환
 */
public class SwitchExample {

    public static void main(String[] args) {
        int num = (int)(Math.random() * 6) +1;

        //num변수의 값이 1~6
        switch(num) {
            case 1:
                System.out.println("1번이 나왔습니다.");
                break;
            case 2:
                System.out.println("2번이 나왔습니다.");
                break;
            case 3:
                System.out.println("3번이 나왔습니다.");
                break;
            case 4:
                System.out.println("4번이 나왔습니다.");
                break;
            case 5:
                System.out.println("5번이 나왔습니다.");
                break;
            /*case 6:
                System.out.println("6번이 나왔습니다.");
                break;*/
            default :
                System.out.println("6번이 나왔습니다.");

        }
    }

}



  • break는 다음 case를 실행하지 않고 switch 문을 빠져나갈 때 사용. break가 없다면 다음 case가 연달아 실행되는데, 이때는 case 값과는 상관없이 실행된다.
package ch04.sec03;

/*
 * break 키워드 사용안했을 경우 switch 예제
 * 
 * 직장인의 출근진행부터 프로세스를 시간대로 출력하기.
 */
public class SwitchNOBreakCaseExample {

    public static void main(String[] args) {

        //8 <= x < 12 - 8, 9, 10, 11
        int time = (int)(Math.random() * 4 ) + 8;

        System.out.println("[현재시간: " + time + " 시]");

        switch(time) {
            case 8: 
                System.out.println("출근합니다.");
            case 9: 
                System.out.println("회의를 합니다.");
            case 10: 
                System.out.println("업무를 봅니다.");
            default:
                System.out.println("외근을 나갑니다.");
        }
    }
}



  • switch 문의 괄호에는 정수 타입(byte, char, short, int, long)과 문자열 타입(String) 변수를 사용할 수 있다.
package ch04.sec03;

/*
  char 데이터타입을 사용한 switch 예제
     - 변수의 값이 대소문자 구분없이 사용하는 경우
 */
public class SwitchCharExample {

    public static void main(String[] args) {

        char grade = 'b';

        switch(grade) {
            case 'A':
            case 'a':
                System.out.println("우수 회원입니다.");
                break;
            case 'B':
            case 'b':
                System.out.println("일반 회원입니다.");
                break;
            default:
                System.out.println("손님입니다.");

        }

    }

}