2012-01-13 23 views
1

私はcars.add(car);行にjava.lang.NullPointerExceptionを取得しています。これを解決する方法は本当にわかりませんが、このエラーに関する他のスレッドを読みましたが、答えはまだあるようです私を逃した。解決方法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

あなたの車がNULLである、初期化されませんでした。このnull arraylistに要素を追加しようとしました。

使用する前に初期化することができます。

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

同様

はあなたの車のArrayListを初期化していなかったように見えます。

0

addCar()を呼び出していることの詳細は表示されませんが、私は確かに言えませんが、文字列が初期化されていないか、ArrayListが初期化されていないことが最も明白です。

0

あなたのコードの多くは省略されていると思われますが、このサンプルからはArrayListが初期化されていないようです。

5

またはあなたが使用することができます:あなたはprivate ArrayList<Car> carsフィールドを初期化していないので

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 = 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

ああ、私は文が新しいのArrayListとthis.cars' 'addCar'関数が呼び出されるたびに – adarshr

+0

うーん...オプション3をオーバーライド'「ので」で始めることはできませんことを知っています。 'これの内容。carsは 'addCar'呼び出しごとに削除され、' cars'は複数の要素を含むことはありません。 – Gevorg

+0

@Gevorg絶対に正しい。だから私はそれを好きではない:) – adarshr

3

あなたは車を運転していません。

private ArrayList<Car> cars = new ArrayList<Car>(); 
関連する問題