FIF's 코딩팩토리

패스트캠퍼스 챌린지 07일차 본문

패스트캠퍼스 챌린지

패스트캠퍼스 챌린지 07일차

FIF 2022. 1. 30. 14:54
반응형

switch ~ case 문

if~else if ~esle 문을 사용할 경우 복잡해보이고 가독성이 떨어질 수 있다. 이럴때 switch~case문을 사용하면 깔끔하게 코딩을 할 수있다. switch ~ case 문은 비교 조건이 특정 값이나 문자열인 경우 사용한다.

break문을 사용하여 각 조건이 만족한다면 switch 블럭을 빠져 나오도록 한다.

자바 14버전 부터 break를 사용하지 않아도 되는 좀더 간결한 표현식이 나왔다.

 

아래 코드에서 보이는 것 처럼 case를 한번에 묶어 사용할 수 있다.

달은 입력하면 몇월까지 나오는 프로그램이다. 이도 저도 아닐 경우는 default로 가도록 할 수 있다.

package ch16;

import java.util.Scanner;

public class SwitchCaseTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int month = sc.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 4:
            day = 30;
            break;

        case 6:
            day = 30;
            break;

        case 9:
            day = 30;
            break;

        case 11:
            day = 30;
            break;

        default:
            System.out.println("존재하지 않는 달입니다.");
            day = -1;
        }
        System.err.println(month + "월은 " + day + "일 입니다.");
    }
}

다음은 문자열이 지원되는 swtich~case 문의 예를 한번 살펴보자.

위의 달을 입력하는 예제에서는 case 오른쪽에 정수를 사용했지만 아래 예처럼 문자열도 사용할 수 있다.

package ch16;

public class SwitchCaseTest2 {

	public static void main(String[] args) {
		String medal = "Gold";
		
		switch(medal) {
		
			case "Gold":
				System.out.println("금메달 입니다.");
				break;
			case "Silver":
				System.out.println("은메달 입니다.");
				break;
			case "Bronze":
				System.out.println("동메달 입니다.");
				break;
			default:
				System.out.println("메달이 없습니다.");
				break;
		}

	}
}

 

자바14부터 swtich~case문을 좀더 간결하게 사용할 수 있도록 바꼈다고 했는데

간단하게 쉼표(,) 로 조건을 구분 한다.

식으로 표현하여 반환 값을 받을 수 있고, 리턴 값이 없는 경우는 오류가 생긴다.

그리고 yield 키워드를 사용 한다.

아래 코드를 보면 case1, 3, 5 .... 이런식으로 되어 있는데 쉼표로 case를 계속 붙여가며 사용할 수 있다.

package ch16;

public class SwitchCaseUpTest {

	public static void main(String[] args) {
		
		int month = 3;
		
		int day = switch (month) {
	    	case 1, 3, 5, 7, 8, 10,12 -> {
	    		System.out.println("한 달은 31일입니다."); 
	    		yield 31;
	    	}
	    	case 4,6,9,11 -> {
	    		System.out.println("한 달은 30일입니다."); 
	    		yield 30;
	    	}
	    	case 2 ->{
	    		System.out.println("한 달은 28일입니다.");
	    		yield 28;
	    	}
	    	default->{
	    		System.out.println("존재하지 않는 달 입니다."); 
	    		yield 0;
	    	}
		};
		System.out.println(month + "월은 " + day + "일입니다.");
	}
}

 

자바에서 크게 조건문을 사용하는 경우를 알아봤다. 그리고 조건문은 정말 많이 사용된다.

앞으로 if문과 switch~case문 이 둘을 적재적소에 사용하도록 연습을 많이하자.

 

 

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr





반응형
Comments