반응형
아래의 switch 문의 목표는
변수 day의 값이 "월요일", "수요일", "금요일" 중에 하나면 >>> "알바 가는 날" 출력.
변수 day의 값이 "화요일" 혹은 "목요일"이면 >>> "쉬는 날" 출력.
public class Example {
public static void main(String[] args) {
String day = "월요일";
switch (day) {
case "월요일":
System.out.println("알바 가는 날");
break;
case "화요일":
System.out.println("쉬는 날");
break;
case "수요일":
System.out.println("알바 가는 날");
break;
case "목요일":
System.out.println("쉬는 날");
break;
case "금요일":
System.out.println("알바 가는 날");
break;
}
}
}
솔직히 실행하는 데엔 아무런 문제가 없지만 중복된 코드가 많다.
예를 들어, 변수 day의 값이 "월요일", "수요일", "금요일" 경우
각 케이스마다
System.out.println("알바 가는 날");
break;
라는 중복된 코드가 발생한다.
중복된 코드를 줄이기 위해 위에 코드를 아래와 같이 if 문으로 간결하게 코드를 짤 수 있다.
public class Example {
public static void main(String[] args) {
String day = "월요일";
if (day == "월요일" || day == "수요일" || day == "금요일") {
System.out.println("알바 가는 날");
} else if (day == "화요일" || day == "목요일") {
System.out.println("쉬는 날");
}
}
}
맨 위 switch 문보다 간결해진 코드.
만약 어떤 이유로 switch 문을 사용해야 한다면, switch 문도 위에 if 문같이 간결하게 짤 수 있다.
public class Example {
public static void main(String[] args) {
String day = "월요일";
switch (day) {
case "월요일":
case "수요일":
case "금요일":
System.out.println("알바 가는 날");
break;
case "화요일":
case "목요일":
System.out.println("쉬는 날");
break;
}
}
}
변수 day의 값을 바꿔도 아무런 문제 없이 된다.
구글링해 봤더니, 오라클 switch 문 관련 문서에서도 case 문을 겹치게 쓴다.
https://docs.oracle.com/javase/8/docs/technotes/guides/language/strings-switch.html
반응형
'코딩 > Java' 카테고리의 다른 글
자바 - 변수의 데이터 타입 확인 방법 (0) | 2024.04.20 |
---|---|
자바 - 형변환 에러 이유 "incompatible types: possible lossy conversion from int to byte" (0) | 2024.03.31 |
자바 - 변수에 숫자 값 할당 시 가독성 높이는 법 (int a = 1,000,000 가능?) (0) | 2024.03.24 |
자바 - float 변수에 실수 값을 그냥 넣으면 에러 나는 이유 (0) | 2023.11.23 |
자바 - 문자열 속 따옴표 ("), 역슬래시 (\) 출력 방법 (0) | 2023.11.22 |