프로그래밍 언어/JAVA(자바) 기초

10.조건문 - switch case문

lroot 2022. 5. 17. 16:38
728x90
반응형

Switch - case 문

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

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

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

- 자바 14부터 좀 더 간결해진 표현식이 지원 됨(break 사용하지 않음)

 

예제)

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+"입니다.");

}

}

 

문자열 지원되는 switch - case 문 예제)

public class SwitchCaseTest2 {

public static void main(String[] args) {
String medal = "dGold";

switch(medal) {
case "Gold" :
System.out.println("금메달입니다.");
break;
case "Silver" :
System.out.println("은메달입니다.");
break;
case "Bronze" :
System.out.println("동메달입니다.");
default:
System.out.println("메달이 없습니다.");
break;
}

}

}

 

JAVA 14부터 지원되는 Switch Expression

- 간단하게 쉼표(,)로 조건 구분

- 식으로 표현하여 반환 값을 받을 수 있음. 리턴 값이 없는 경우는 오류가 생김

- yield 키워드 사용

 

예제)

public class SwitchCaseUpTest {

public static void main(String[] args) {

int month = 2;

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

};
System.out.println(month+"월은 "+day+"일입니다.");

}

}