2012-01-13 166 views
1

我得到java.lang.NullPointerExceptioncars.add(car);行,我真的不確定如何解決它,我已經閱讀了一些與此錯誤有關的其他線程,但答案似乎仍然有躲過了我。如何解決java.lang.NullPointerException

public class RentalCompany { 

    private ArrayList<Car> cars; 
    private String description; 
    private int carDownPayment; 
    private int rate; 
    private int carNumber; 

    public void addCar(String descriptionOfTheCar, int downPayment, 
     int dailyRate) { 
     Car car = new Car(descriptionOfTheCar, downPayment, dailyRate); 
     cars.add(car); 
    } 
} 

如果任何人可以提供任何意見,我會非常感謝,提前致謝。

回答

2

初始化列表:

private ArrayList<Car> cars = new ArrayList<Car>(); 
0

cars尚未初始化。

嘗試添加下列到你的構造:

cars = new ArrayList<>(); 

你加車前。

0

最初cars == null,所以將其初始化爲:

private ArrayList<Car> cars = new ArrayList<Car>(); 
0

你的車沒有初始化,這是空的。並且您試圖將元素添加到此空數組列表。

你可以在使用前初始化它。

cars=new ArrayList<Car>(); 
Car car = new Car(descriptionOfTheCar, downPayment, dailyRate); 
cars.add(car); 
0

看起來你沒有初始化汽車的ArrayList。

0

沒有看到什麼調用addCar()的任何細節我不能肯定地說,但兩個最明顯的可能性是該字符串尚未初始化或ArrayList尚未初始化。

0

我假設你的大部分代碼都被省略了,但從這個例子看來,你還沒有初始化你的ArrayList

5

或者你可以使用:

public void addCar(String descriptionOfTheCar, int downPayment, int dailyRate) 
     { 
      if (cars == null) 
       cars = new ArrayList<>(); 

      Car car = new Car(descriptionOfTheCar, downPayment, dailyRate); 
      cars.add(car); 
     } 

假設它的一個線程訪問

7

因爲你沒有初始化private ArrayList<Car> cars領域。在構造函數或方法本身中執行它。

private ArrayList<Car> cars = new ArrayList<Car>(); 

OR

public RentalCompany() { 
    this.cars = new ArrayList<Car>(); 
} 

OR

public void addCar(String descriptionOfTheCar, int downPayment, 
    int dailyRate) { 
    this.cars = new ArrayList<Car>(); 
    Car car = new Car(descriptionOfTheCar, downPayment, dailyRate); 
    cars.add(car); 
} 

我個人比較喜歡的構造方法。

+0

哦,我知道,一個句子不能以開頭「因爲」 – adarshr 2012-01-13 13:15:03

+0

嗯...選項3次重寫'this.cars'用新的ArrayList每次'addCar'函數被調用時。 '這個的內容。汽車'將在每個addCar調用中被刪除,並且'cars'永遠不會包含多個元素。 – Gevorg 2012-01-13 15:07:07

+0

@Gevorg絕對正確。這就是爲什麼我不喜歡它:) – adarshr 2012-01-13 15:24:46

3

你沒有啓動汽車。

private ArrayList<Car> cars = new ArrayList<Car>(); 
相關問題