2017-02-01 14 views
0

なぜこのコードは例外をスローしませんか?多くのことを試してみましたが、私はこのようなJUnitのクラスでそれをテストするとき、例えば、それが例外をスローしません。コンストラクタは新しい例外をスローしませんか?

Vehicle e = new Vehicle('C', 'G', "A1234"); 
// Constructor 
public Vehicle(char kType, char dType, String regNr) { 
    String temp0 = regNr.substring(0, 2); 
    String temp = regNr.substring(2); 
    boolean finish = false; 

    if ("" + kType == "C") { 
     for (char c : temp0.toCharArray()) { 
      if (Character.isDigit(c)) { 
       throw new IllegalArgumentException("3"); 
      } 
     } 

     if (temp.length() == 5) { 
      finish = true; 
     } else { 
      finish = false; 
      throw new IllegalArgumentException("4"); 
     } 

     try { 
      Integer.parseInt(temp); 
     } catch (NumberFormatException nfe) { 
      finish = false; 
      throw new IllegalArgumentException("5"); 
     } 
    } 
} 
+3

'if(" "+ kType ==" C ")' ???どうして 'if(kType == 'C')'だけではないのですか? –

+0

@barakmanosコード全体を無意味にするためには? – GhostCat

+1

その他:あなたが私たちの時間を費やして**あなたを助けてほしい時。だから**あなた**は、あなたのソースコードを適切にフォーマット/インデントするのにかかる1分を費やしてください。私たちにこの**混乱**をダンプする代わりに。 – GhostCat

答えて

1

それはないだろう。

if(""+kType=="C"){ 

このコードは常にあなたにfalseを与えます。

あなた(ほとんど)決して ==; equals()メソッドを使用する必要があります。もちろん、あなたのifブロックが実際に入力されたときに、それらのIllegalArgumentExceptionsをスローすることにつながるさまざまな条件があります。

関連する問題