22.03.23_조건문_switch

Saparian·2022년 3월 22일
0

오늘의배움

목록 보기
38/53

Java에 존재하는 또다른 조건문 : switch

하나의 조건식으로 많은 경우의 수를 처리하고자 할 때 switch문을 사용한다.
표현이 간결해서 알아보기 쉽지만 제약조건이 if문에 비해 많은 편이다.

switch(조건식) {
	case1:
    	// 조건식의 결과가 값1과 같을 때 수행될 문장
        //...
        break;
    case2:
    	// 조건식의 결과가 값2과 같을 때 수행될 문장
        //...
        break;
    case3:
    	// 조건식의 결과가 값3과 같을 때 수행될 문장
        //...
        break;
    default :
    	// 조건식의 결과와 일치하는 case문이 없을 때 수행될 문장
        //...
    }
  • break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나간다.

경우에 따라 break문을 일부러 삭제하는 경우도 있다.

switch (level) {
	case 3:
    	grantDelete();	// 삭제 권한을 준다
    case 2:
    	grantWrite();	// 쓰기 권한을 준다
    case 1:
    	grantRead();	// 읽기 권한을 준다
}
  • level이 3일 경우 : 삭제, 쓰기, 읽기 권한을 모두 가진다.
  • level이 2일 경우 : 쓰기, 읽기 권한을 가진다.
  • level이 1일 경우 : 읽기 권한만 가진다.

제약조건

  • 조건식의 결과는 정수 또는 문자열이어야 한다.

  • case문의 값은 정수, 상수만 가능하며, 중복되지 않아야한다.

    int num, result;
    final int ONE = 1; // 정수 상수
    
    switch(result){ 
       case '1':		// OK, 문자 리터럴(정수 상수 49와 동일)
       case ONE:		// OK, 정수 상수
       case "YES":		// OK, 문자열 리터럴(jdk 1.7부터 적용)
       case num:		// 에러, 변수라서 불가
       case 1.0:		// 에러, 실수라서 불가
       }

예문

public static void main(String[] args) {
		System.out.print("현재 월을 입력하세요.>");
		
		Scanner scanner = new Scanner(System.in);
		int month = scanner.nextInt();	// 화면을 통해 입력받은 숫자를 month에 저장
		
		switch(month) {
			case 3:
			case 4:
			case 5:
				System.out.println("현재의 계절은 봄입니다.");
				break;
			case 6:	case 7:	case 8:
				System.out.println("현재의 계절은 여름입니다.");
				break;
			case 9:	case 10: case 11:
				System.out.println("현재의 계절은 가을입니다.");
				break;
			default:
//			case 12: case 1: case 2:
				System.out.println("현재의 계절은 겨울입니다.");
		}
	} // main의 끝

결과값

현재 월을 입력하세요.>10
현재의 계절은 가을입니다.

0개의 댓글