작성
·
290
·
수정됨
0
package enumeration.ex2;
public class DiscountService {
public int discount(ClassGrade grade, int price) {
if (grade == ClassGrade.BASIC) {
return price / 100 * 10;
}
if (grade == ClassGrade.GOLD) {
return price / 100 * 20;
}
if (grade == ClassGrade.DIAMOND) {
return price / 100 * 30;
}
return 0;
}
}
package enumeration.ex2;
public class DiscountServiceTest {
public int discount(ClassGrade grade, int price) {
switch (grade) {
case ClassGrade.BASIC -> {
return price / 100 * 10;
}
case ClassGrade.GOLD -> {
return price / 100 * 20;
}
case ClassGrade.DIAMOND -> {
return price / 100 * 30;
}
default -> {
return 0;
}
}
}
}
안녕하세요. 위의 코드 같이 if 문으로 사용하면 정상적으로 실행이 가능한데
아래 처럼 if 문을 개선된 switch 문으로 바꾸면 왜 컴파일 오류가 뜨는지 정확히 알고 싶습니다.
case 에는 리터럴 상수만 사용 가능하고
참조값은 case에 적을 수 없는 것 같은데 맞나요?
답변 1
-4
안녕하세요. 따뜻한 당나귀님, 공식 서포터즈 코즈위버입니다.
스위치 문에서 열거형을 사용하기 위해 코드를 다음과 같이 수정해주세요.
switch (grade) {
case BASIC -> {
return price / 100 * 10;
}
case GOLD -> {
return price / 100 * 20;
}
case DIAMOND -> {
return price / 100 * 30;
}
default -> {
return 0;
}
}
감사합니다.