[Java] switch문

Yeoonnii·2023년 1월 7일
0

Java

목록 보기
12/30
post-thumbnail

잘 사용해보지 않았던 switch문에 대한 개념을 정리해보려고 한다🧐

switch문이란

조건문은 if문과 switch문으로 나뉜다.
switch문은 if문과 비슷하지만 좀 더 정형화 된 조건판단문이다.

처리해야 하는 경우의 수가 많은 경우 if-else if문 보다 switch문이 주로 사용된다.

switch/case 문은 if else 구조로 변경이 가능하지만 if else 구조로 작성된 모든 코드를 switch 문으로 변경할 수는 없다.

switch문의 조건식의 값은 true/false값이 아닌 어떠한 결과의 값을 가진다
= switch문의 조건식의 결과는 true/false값이 아니어야 한다!

중복된 case문은 존재할 수 없다!

조건식의 결과와 일치하는 case문이 실행되며, case문이 실행된 후 break를 만나야 중지되므로 break문을 잊지 않도록 한다.
⇒ break문이 빠져 있는 경우 그 다음의 case문이 실행된다!

switch문의 제약조건

  • switch문의 조건식의 결과는
    정수, 상수(문자포함) 또는 문자열의 형태 = byte, short, char, int만 가능하다

switch문의 구조

  • default: default문
    = 조건식의 결과와 일치하는 case문이 없는경우 수행되는 문장. 생략이 가능하다
switch(입력변수) {
    case 입력값1: ...
         break;
    case 입력값2: ...
         break;
    ...
    default: ...
         break;
}

switch문 연습해보기

문제 : 월을 입력받아 해당 월의 일수를 보여주는 프로그램을 작성하시오

  • 1, 3, 5, 7, 8, 10, 12월 : 31일까지
  • 4, 6, 9, 11 월 : 30일까지
  • 2 월 : 28일까지
 public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("월을 입력하세요 => ");

        int month = sc.nextInt();

        switch(month){
            case 1: case 3: case 5: case 7:
            case 8: case 10: case 12:
            System.out.println("31일 까지 입니다");
            break;
            
            case 4: case 6: case 9: case 11:
            System.out.println("30일 까지 입니다");
            break;
            
            case 2:
            System.out.println("28일 까지 입니다");
            break;
        }
    }
}

마지막에 2월을 case로 지정해 주어도 되지만,
아래와 같이 default문을 사용해도 된다

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("월을 입력하세요 => ");

        int month = sc.nextInt();

        switch(month){
            case 1: case 3: case 5: case 7:
            case 8: case 10: case 12:
            System.out.println("31일 까지 입니다");
            break;
            
            case 4: case 6: case 9: case 11:
            System.out.println("30일 까지 입니다");
            break;
            
            default:
            System.out.println("28일 까지 입니다");
            break;
        }
    }

0개의 댓글