2016-11-14 11 views
0

引数が有効なときに私のコンパイラが不正な引数例外を表示している理由を理解できません。何か案は?不正な引数例外を投げる

public class bikeBrakeTest { 
    public enum BrakeType {Caliper, Cantilever, LinearPull, Disc }; 
    public BrakeType brakes; 

    public bikeBrakeTest() //Defualt Constructor 
    { 
    brakes = BrakeType.Caliper; 
    } 

    public bikeBrakeTest(BrakeType aBrake) //Parameterized Constructor 
    { 
    setBrakes(aBrake); 
    } 


    public void setBrakes (BrakeType aBrake) //Mutator Method "set" 
    { 
    if (aBrake.equals("Caliper") || aBrake.equals("Cantilever") || aBrake.equals("LinearPull") || aBrake.equals("Disc")) 
    { 
     brakes = aBrake; 
    } 
    else throw new IllegalArgumentException("invalid"); 
    } 
} 

そして、私のテスターは..です

public class testing { 
    public static void main(String[] args) 
    { 
     bikeBrakeTest myBike = new bikeBrakeTest(); 
     myBike.setBrakes(bikeBrakeTest.BrakeType.Caliper); 
} 
} 
+1

1.これはコンパイラではありません。 2.なぜあなたは 'BrakeType'が' String'と等しくなると思いますか? –

+1

'aBreak'は' 'Caliper''と等しくありません。しかし、それは 'BrakeType.Caliper'と同じかもしれません。 –

答えて

1

あなたが直接あなたが以下に示すように、比較のためaBrake == BrakeType.Caliperを使用する必要はなく、enum'Caliper'stringに比較することはできません。

public void setBrakes (BrakeType aBrake) { 
     if (aBrake == BrakeType.Caliper || 
      aBrake == BrakeType.Cantilever || 
      aBrake == BrakeType.LinearPull || 
      aBrake == BrakeType.Disc) { 
        brakes = aBrake; 
     } 
     else throw new IllegalArgumentException("invalid"); 
} 
+0

ありがとうございました! –

関連する問題