상세 컨텐츠

본문 제목

switch-case문

JAVA

by 본투비곰손 2022. 7. 6. 22:44

본문

728x90

if-else if -else 문을 사용할 때 복잡하고 번거로운 부분을 가독성 있게 구현

비교 조건이 특정 값이나 문자열인 경우 사용

break문을 사용하여 각 조건이 만족되면 swich 블럭을 빠져나오도록 함

JAVA14부터 좀 더 간결해진 표현식이 지원됨

package ch16;

import java.util.Scanner;

public class SwitchCaseTest {

	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);
		int month = scanner.nextInt();
		
		int day;
		switch(month){
			case 1: 
				day = 31;
				break;
			case 2: 
				day = 28;
				break;
			case 3: 
				day = 31;
				break;
			case 4: 
				day = 30;
				break;
			case 5: 
				day = 31;
				break;
			case 6: 
				day = 30;
				break;
			case 7: 
				day = 31;
				break;
			case 8: 
				day = 31;
				break;
			case 9: 
				day = 30;
				break;
			case 10: 
				day = 31;
				break;
			case 11: 
				day = 30;
				break;
			case 12: 
				day = 31;
				break;
			default:
				System.out.println("존재하지 않는 달 입니다.");
				day = -1;
			
		}
		System.out.println(month+"월은"+day+"일까지 있습니다.");
	}

}

위 코드를 아래와 같이 줄여 사용 할 수 있다.

package ch16;

import java.util.Scanner;

public class SwitchCaseTest {

	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);
		int month = scanner.nextInt();
		
		int day;
		switch(month){
			case 1: case 3: case 5: case 7: case 8: case 10: case 12:
				day = 31;
				break;
			case 2: 
				day = 28;
				break;
            case 6: case 9: case 11: 
            	day = 30;
                break;
			default:
				System.out.println("존재하지 않는 달 입니다.");
				day = -1;
			
		}
		System.out.println(month+"월은"+day+"일까지 있습니다.");
	}

}

최종적으로 JAVA14 에서는 아래와 같이 축약 할 수 있다.

package ch16;

import java.util.Scanner;

public class SwitchCaseTest {

	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);
		int month = scanner.nextInt();
		
		int day = switch(month){
			case 1,3,5,7,8,10,12 ->{
				System.out.println("이번달은 31일까지 입니다.");
				yield 31;
			}	
			case 2 ->
				28;
			case 6,9,11 ->
				30;
			default->{
				System.out.println("존재하지 않는 달 입니다.");
				yield -1;
			}
		};
		System.out.println(month+"월은"+day+"일까지 있습니다.");
	}

}
728x90

'JAVA' 카테고리의 다른 글

반복문 do-while문  (0) 2022.07.06
반복문 - while문  (0) 2022.07.06
조건이 여러 개 일 때의 if문  (0) 2022.07.05
조건문 - if문  (0) 2022.07.05
자바의 연산자들 - 3  (0) 2022.07.05

관련글 더보기