🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

섹션 5 - 3(타입 안전 열거형 패턴) if 문대신 개선된 switch 문으로 변경

24.04.02 23:06 작성 24.04.02 23:09 수정 조회수 195

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

codesweaver님의 프로필

codesweaver

2024.04.03

안녕하세요. 따뜻한 당나귀님, 공식 서포터즈 코즈위버입니다.

스위치 문에서 열거형을 사용하기 위해 코드를 다음과 같이 수정해주세요.

switch (grade) {
    case BASIC -> {
        return price / 100 * 10;
    }
    case GOLD -> {
        return price / 100 * 20;
    }
    case DIAMOND -> {
        return price / 100 * 30;
    }
    default -> {
        return 0;
    }
}

감사합니다.

채널톡 아이콘