punit1337
punit1337

Reputation: 21

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;
    }
}

Upvotes: 0

Views: 2338

Answers (2)

moon
moon

Reputation: 165

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

Upvotes: 0

Adnan Isajbegovic
Adnan Isajbegovic

Reputation: 2307

Use this:

private static final int ONBOARD_SALE = 1;

Upvotes: 1

Related Questions