2016-05-12 8 views
-1

おそらく基本的な質問です。私は空白の最後のフィールドが '容量'のために初期化されないかもしれないと私に言っているエラーを得ています。私のコードは次のとおりです。ifステートメントでネストされている最終フィールドを初期化する方法はありますか?

public class Car { 

private final RegNoInterface regNo; 
private final String typeOfCar; 
private final int capacity; 
private boolean outForRent; 
private boolean tankFull; 
private int currentFuel; 

public Car(RegNoInterface regNo, String typeOfCar){ 
    //validate inputs 
    this.regNo = regNo; 
    this.typeOfCar = typeOfCar; 

    if(typeOfCar == "small"){ 
     this.capacity = 45; 
     this.currentFuel = 45; 
    } 
    else if(typeOfCar == "large"){ 
     this.capacity = 65; 
     this.currentFuel = 65; 
    } 
} 
} 

小さい車は45Lの容量を持ち、大きな車は65Lの容量を持っています。キャパシティが変わることはないので、フィールドは最終的なものであることが理にかなっています。誰でもこの仕事をどうすればできるのか分かっていますか?

+3

typeOfCarが 'abc'の場合、容量に何が設定されますか? –

+2

また、[Javaで文字列を比較する方法は?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) –

+0

文字列の比較を完全に忘れてしまいました。私の悪い。ああ、私は今参照してください。私は入力を検証するつもりだから、 'else'の部分だけが必要です。 –

答えて

3

typeOfCar(小および大)が2つしかないことが確実であれば、else if条件をelseに変更します。クリーンなソリューションは、TypeOfCarのEnumを作成することです。これはSMALLまたはLARGEのいずれかになります。そのため、Carクラスのクライアントは何も送信できません。

if("small".equals(typeOfCar)){ 
    this.capacity = 45; 
    this.currentFuel = 45; 
} 
else { 
    this.capacity = 65; 
    this.currentFuel = 65; 
} 
+0

常にString.equals()を使用してください。 "String" == "String"は、文字列の値ではなく参照を比較します。 –

+0

はい、それを逃した。修正をありがとう。 – Vijay

0

車のサイズが大きいか小さいかを指定する必要があります。

関連する問題