2016-04-26 25 views
0

私の文字列の定数式は既に初期化されています。ここで問題と思われるものは何ですか?スイッチケースで定数式が必要です

エラーは「定数式が必要です」です。以下は

この

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

が(列挙型は、おそらくよりよいでしょう。) –

答えて

1

使用、私のコードです:

private static final int ONBOARD_SALE = 1; 
+0

私は当初、最終的に使用し、それ私はそれを最終的にしたくありません。それを行う他の方法はありますか? – punit1337

+0

ロジックを変更します。スイッチで変数を使用することはできませんので、 "case 1"のように、最終値を設定する必要があります。おそらく、列挙型を作成して使用することができます。 Btw。スイッチはOOPではないので、別のロジックを見つけるほうがよいでしょう。 –

0

チェックブレース

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 
+0

これは私のコードでは適切です。私は誤ってブレースをここに追加したに違いありません。それを編集します。 – punit1337

関連する問題