2016-05-12 51 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

糟糕,完全忘了字符串比較。我的錯。哦,我現在看到。由於我要驗證輸入,所以我只需要'其他'部分。 –

回答

3

如果您確定將只有2個typeOfCar(小和大),請將else if條件更改爲else。乾淨的解決方案是爲typeOfCar創建一個Enum,它可以是小的或大的,所以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

您應該指定轎廂既不大也不小的情況下的容量值。