如何解决java.lang.NullPointerException

如何解决java.lang.NullPointerException,java,Java,我在cars.add(car)上得到java.lang.NullPointerException行,我真的不确定如何解决它,我已经阅读了一些与此错误相关的其他线程,但答案似乎仍然没有找到 公共级租赁公司{ 私家车; 私有字符串描述; 私人信用卡支付; 私人利率; 私有整数卡号; public void addCar(该车的字符串描述,整数首付, int dailyRate){ 汽车=新车(描述汽车、首付款、日租期); cars.add(car); } } 初始列表: private ArrayL

我在
cars.add(car)上得到
java.lang.NullPointerException
行,我真的不确定如何解决它,我已经阅读了一些与此错误相关的其他线程,但答案似乎仍然没有找到

公共级租赁公司{
私家车;
私有字符串描述;
私人信用卡支付;
私人利率;
私有整数卡号;
public void addCar(该车的字符串描述,整数首付,
int dailyRate){
汽车=新车(描述汽车、首付款、日租期);
cars.add(car);
}
}
初始列表:

private ArrayList<Car> cars = new ArrayList<Car>();
private ArrayList cars=new ArrayList();
初始列表:

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

车辆
尚未初始化

尝试将以下内容添加到构造函数中:

cars = new ArrayList<>();
cars=newarraylist();

在添加汽车之前。

汽车
尚未初始化

尝试将以下内容添加到构造函数中:

cars = new ArrayList<>();
cars=newarraylist();

在向其添加汽车之前。

首先
cars==null
,因此按如下方式初始化它:

private ArrayList cars=new ArrayList();

最初
cars==null
,因此按如下方式初始化它:

private ArrayList cars=new ArrayList();

您的汽车未初始化,为空。您试图将元素添加到此空arraylist

您可以在使用之前对其进行初始化

cars=newarraylist();
汽车=新车(描述汽车、首付款、日租期);
cars.add(car);

您的汽车未初始化,为空。您试图将元素添加到此空arraylist

您可以在使用之前对其进行初始化

cars=newarraylist();
汽车=新车(描述汽车、首付款、日租期);
cars.add(car);

看起来您没有初始化您的cars ArrayList。

看起来您没有初始化您的cars ArrayList。

没有看到调用addCar()的任何细节,我不能确定,但最明显的两种可能性是字符串没有初始化或ArrayList没有初始化

在没有看到调用addCar()的任何细节的情况下,我无法确定,但最明显的两种可能性是字符串未初始化或ArrayList未初始化

我假设您的大部分代码都被省略了,但是从这个示例来看,您似乎还没有初始化
ArrayList
我假设您的大部分代码都被省略了,但是从这个示例来看,您似乎还没有初始化
ArrayList
,或者您可以使用:

    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);
        }
public void addCar(对car、int首付、int dailrate的字符串描述)
{
if(cars==null)
cars=新阵列列表();
汽车=新车(描述汽车、首付款、日租期);
cars.add(car);
}
假设其单线程访问

或您可以使用:

    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);
        }
public void addCar(对car、int首付、int dailrate的字符串描述)
{
if(cars==null)
cars=新阵列列表();
汽车=新车(描述汽车、首付款、日租期);
cars.add(car);
}

假设它是单线程访问,因为您尚未初始化
private ArrayList cars
字段。要么在构造函数中,要么在方法本身中惰性地执行

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

公共租赁公司(){
this.cars=new ArrayList();
}

public void addCar(车的字符串描述,整数首付,
int dailyRate){
this.cars=new ArrayList();
汽车=新车(描述汽车、首付款、日租期);
cars.add(car);
}

我个人更喜欢构造函数方法

因为您尚未初始化
private ArrayList cars
字段。要么在构造函数中,要么在方法本身中惰性地执行

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

公共租赁公司(){
this.cars=new ArrayList();
}

public void addCar(车的字符串描述,整数首付,
int dailyRate){
this.cars=new ArrayList();
汽车=新车(描述汽车、首付款、日租期);
cars.add(car);
}

我个人更喜欢构造函数方法

你没有发动汽车

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

您没有启动汽车

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

哦,我知道一个句子不能以“因为”开头,嗯。。。每次调用
addCar
函数时,选项3都会使用新的ArrayList覆盖
this.cars
this.cars
的内容将在每次
addCar
调用时被删除,
cars
将不会包含多个元素。哦,我知道一个句子不能以“因为”开头。。。每次调用
addCar
函数时,选项3都会使用新的ArrayList覆盖
this.cars
this.cars
的内容将在每次调用
addCar
时删除,并且
cars
将永远不会包含多个元素。