10.조건문 - switch case문
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+"일입니다.");
}
}