본문 바로가기

Java 문법/코딩은 처음이라 with 자바 (책)

[Java] - 제어문4 : 조건문 - switch 문

switch 문이란?

switch 문은 if 문과 같은 조건문으로 특정 상황에서는 if 문보다 좀더 깔끔하게 로직 분기처리를 가능하게 해주는 문법이다. 개인적으로 정말 재밌고 편리하다고 생각하는 문법이다.

switch 문의 특징.

  • switch 문의 () 조건식에는 if 문과 달리 boolean 값 외 변수, 상수, 수식, 메서드 등이 올수 있고 그 결과값은 정수 또는 문자(열) 이어야 한다.
  • case 문의 값은 정수 또는 문자(열) 만 받을 수 있다.
  • case 문의 값은 다른 case 와 중복으로 지정될 수 없다.
  • 각각의 case 문은 break; 로 끝나야 한다. 만약 break 으로 끝맺음을 안했을시 다음 case 로 넘어가 의도하지 않은 잘못된 분기처리가 될 수 있다.
  • switch 문의 마지막은 default 값을 넣어줘야 한다. if 문의 else 와 비슷하며 해당하는 case 가 없을때 default 를 실행하고 switch 문 로직을 종료한다.
✚ [ switch 문의 문법 ]  
switch (변수) {
    case 조건 1 :
         // 조건1 실행 로직
         break;
    case 조건 2 :
         // 조건2 실행 로직
         break;
    case 조건 3 :
         // 조건3 실행 로직
         break;
    default :
         // 상기 조건에 해당 사항이 없을 경우 default 실행 로직.
}

 

실습 코드

행성의 간단한 정보를 알아볼수 있는 콘솔 장난감을 만들어 보자.

public static void main(String[] args) throws Exception {
    Scanner s = new Scanner(System.in);

    while(true) {
        System.out.println("행성 하나를 선택해주세요. \n 1. [지구] \n 2. [화성] \n 3. [토성] \n 4. [exit]");
        String planet = s.next();
        switch (planet) {
            case "지구" :
                System.out.println("지구를 선택하셨습니다. \n --> 지구는 퍼렁별로 우리가 살고있는 행성입니다.");
                break;
            case "화성" :
                System.out.println("화성을 선택하셨습니다. \n --> 화성은 일론 머스크가 꼭 사람을 보내고 싶어하는 우리 이웃 행성입니다.");
                break;
            case "토성" :
                System.out.println("토성을 선택하셨습니다. \n --> 토성은 멋진 고리를 가지고 있는 행성입니다.");
                break;
            case "exit" :
                System.out.println("종료합니다.");
                System.exit(0);
            default :
                System.out.println("다시 선택해 주세요.");
        }
    }
}

while (true) 로 무한루프를 사용하여 행성 정보 시스템 콘솔 장난감을 한번 만들어 보았다. 

 

목록에 제시된 행성명을 치면 그에 대한 정보가 출력되며 모두 사용 후 exit 이라고 입력하면 해당 장난감은 종료된다.

 

참고로 switch 문 내에 사용된 break; 문은 while 문까지는 영향을 끼치지 못한다. 그저 switch 문만 break; 을 걸고 다시 while 문으로 빠져나와 다시 반복문을 실행시켜 Scanner 에 next() String 값을 받을 준비를 한다.

 

exit 에서 System.exit(0) 을 사용해 "main" 메서드의 실행을 종료시켰다.