简体   繁体   English

开关情况下需要常量表达式

[英]Constant expression required in switch case

I have already initialized constant expressions for my string. 我已经为我的字符串初始化了常量表达式。 What seems to be the problem here? 这里似乎是什么问题?

The error I am getting is "constant expression required". 我得到的错误是“需要常量表达式”。

Below is my code, 下面是我的代码,

public class VatCalculator {

    private static int ONBOARD_SALE =1;
    private static int ONBOARD_SERVICE =2;
    private static int PREORDER_SALE =3;
    private static int PREORDER_SERVICE =4;

    private static final Map<String, Integer> serviceMap = new HashMap<String, Integer>();
    static {
        serviceMap.put("onboardSale", ONBOARD_SALE);
        serviceMap.put("onboardService", ONBOARD_SERVICE);
        serviceMap.put("preorderSale", PREORDER_SALE);
        serviceMap.put("preorderService", PREORDER_SERVICE);
    }



public static double calculate(String serviceGroup) {

int type = serviceMap.get(serviceGroup);

switch(type) {
//error at below line
case ONBOARD_SALE:
        //do something

default:break;
    }
}

用这个:

private static final int ONBOARD_SALE = 1;

check brace 检查括号

    public class VatCalculator {

        private static int ONBOARD_SALE =1;
        private static int ONBOARD_SERVICE =2;
        private static int PREORDER_SALE =3;
        private static int PREORDER_SERVICE =4;

        private static final Map<String, Integer> serviceMap = new HashMap<String, Integer>();
        static {
            serviceMap.put("onboardSale", ONBOARD_SALE);
            serviceMap.put("onboardService", ONBOARD_SERVICE);
            serviceMap.put("preorderSale", PREORDER_SALE);
            serviceMap.put("preorderService", PREORDER_SERVICE);
        }


    public static double calculate(String serviceGroup) {

        int type = serviceMap.get(serviceGroup);

        switch(type) {
            //error at below line
            case ONBOARD_SALE:
                    //do something

            default:break;
        }
    }
    } //<-- add like this brace

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM