Java Can';我不明白为什么我';我得到一个空指针错误
我对java编码和堆栈交换都很熟悉。我一直在尝试实践这个汽车经销商计划。当我试图将一辆汽车或一辆自行车添加到一个车辆列表中时,我总是会遇到一个空指针错误,我似乎不知道为什么,我几乎肯定我把东西弄错了,放在了错误的地方,但我不知道哪一个去了哪里。我使用了一个driver,一个Vehicles超类,以及Cars和Bikes作为继承自Vehicles的两个子类。 道歉如果我对任何事情不清楚,任何帮助都将不胜感激。谢谢Java Can';我不明白为什么我';我得到一个空指针错误,java,arraylist,nullpointerexception,Java,Arraylist,Nullpointerexception,我对java编码和堆栈交换都很熟悉。我一直在尝试实践这个汽车经销商计划。当我试图将一辆汽车或一辆自行车添加到一个车辆列表中时,我总是会遇到一个空指针错误,我似乎不知道为什么,我几乎肯定我把东西弄错了,放在了错误的地方,但我不知道哪一个去了哪里。我使用了一个driver,一个Vehicles超类,以及Cars和Bikes作为继承自Vehicles的两个子类。 道歉如果我对任何事情不清楚,任何帮助都将不胜感激。谢谢 public class BMWdriver { ArrayList<Veh
public class BMWdriver {
ArrayList<Vehicles> list;
public void Driver() {
list = new ArrayList<Vehicles>();
}
public void inputCarDetails() {
Scanner scan = new Scanner(System.in);
String model, colour, fuelType, layout, frame, vehicleType;
int doors, stock, displacement, topSpeed, stroke, noSeats, noVehicles;
double price, fuelMpg;
boolean sunroof;
Vehicles car;
System.out.println("----Entering car details----");
System.out.println("\nEnter model");
model = scan.nextLine();
System.out.println("Enter Price");
price = scan.nextDouble();
scan.nextLine();
System.out.println("Enter colour");
colour = scan.nextLine();
System.out.println("Enter no. in stock");
stock = scan.nextInt();
System.out.println("Enter MPG");
fuelMpg = scan.nextDouble();
System.out.println("Enter displacement");
displacement = scan.nextInt();
System.out.println("Enter top speed");
topSpeed = scan.nextInt();
System.out.println("Enter no. of doors");
doors = scan.nextInt();
System.out.println("Enter fuel type");
fuelType = scan.nextLine();
System.out.println("Enter wheel layout");
layout = scan.nextLine();
System.out.println("Enter sunroof (true/false)");
sunroof = scan.nextBoolean();
car = new Cars(model, price, colour, stock, fuelMpg, displacement, topSpeed, doors, fuelType, layout, sunroof);
list.add(car);
}
public void inputBikeDetails() {
Scanner scan = new Scanner(System.in);
String model, colour, fuelType, layout, frame, vehicleType;
int doors, stock, displacement, topSpeed, stroke, noSeats, noVehicles;
double price, fuelMpg;
boolean sunroof;
Vehicles bike;
System.out.println("----Entering bike details----");
System.out.println("\nEnter model");
model = scan.nextLine();
System.out.println("Enter Price");
price = scan.nextDouble();
scan.nextLine();
System.out.println("Enter colour");
colour = scan.nextLine();
System.out.println("Enter no. in stock");
stock = scan.nextInt();
System.out.println("Enter MPG");
fuelMpg = scan.nextDouble();
System.out.println("Enter displacement");
displacement = scan.nextInt();
System.out.println("Enter top speed");
topSpeed = scan.nextInt();
System.out.println("Enter engine stroke");
stroke = scan.nextInt();
System.out.println("Enter no. of seats");
noSeats = scan.nextInt();
System.out.print("Enter the frame type");
frame = scan.nextLine();
bike = new Bikes(model, price, colour, stock, fuelMpg, displacement, topSpeed, stroke, noSeats, frame);
list.add(bike);
}
public static void main(String[] args) // main method
{
BMWdriver driver = new BMWdriver();
driver.startMenu();
driver.inputCarDetails();
driver.inputBikeDetails();
}
}
公共类BMWdriver{
数组列表;
公共空间驱动程序(){
列表=新的ArrayList();
}
公共无效InputCardDetails(){
扫描仪扫描=新扫描仪(System.in);
串型号、颜色、燃料类型、布局、框架、车辆类型;
内门、库存、位移、顶速、行程、鼻侧、新车;
双倍价格,每加仑燃油;
布尔天窗;
汽车;
System.out.println(“----输入车辆详细信息----”;
System.out.println(“\n输入模式”);
model=scan.nextLine();
系统输出打印项次(“输入价格”);
price=scan.nextDouble();
scan.nextLine();
System.out.println(“输入颜色”);
color=scan.nextLine();
系统输出打印项次(“输入库存编号”);
stock=scan.nextInt();
System.out.println(“输入MPG”);
fuelMpg=scan.nextDouble();
System.out.println(“输入位移”);
位移=scan.nextInt();
System.out.println(“输入最高速度”);
topSpeed=scan.nextInt();
系统输出打印号(“输入门号”);
doors=scan.nextInt();
系统输出打印项次(“输入燃料类型”);
fuelType=scan.nextLine();
System.out.println(“输入车轮布局”);
layout=scan.nextLine();
系统输出打印项次(“输入天窗(正确/错误)”;
天窗=scan.nextBoolean();
车=新车(型号、价格、颜色、库存、燃油里程、排量、最高速度、车门、燃油类型、布局、天窗);
列表。添加(car);
}
public void inputBikeDetails(){
扫描仪扫描=新扫描仪(System.in);
串型号、颜色、燃料类型、布局、框架、车辆类型;
内门、库存、位移、顶速、行程、鼻侧、新车;
双倍价格,每加仑燃油;
布尔天窗;
汽车和自行车;
System.out.println(“----输入自行车详细信息----”;
System.out.println(“\n输入模式”);
model=scan.nextLine();
系统输出打印项次(“输入价格”);
price=scan.nextDouble();
scan.nextLine();
System.out.println(“输入颜色”);
color=scan.nextLine();
系统输出打印项次(“输入库存编号”);
stock=scan.nextInt();
System.out.println(“输入MPG”);
fuelMpg=scan.nextDouble();
System.out.println(“输入位移”);
位移=scan.nextInt();
System.out.println(“输入最高速度”);
topSpeed=scan.nextInt();
System.out.println(“输入发动机冲程”);
stroke=scan.nextInt();
系统输出打印项次(“输入座位号”);
nosets=scan.nextInt();
系统输出打印(“输入帧类型”);
frame=scan.nextLine();
自行车=新自行车(型号、价格、颜色、库存、每加仑燃油、排量、最高速度、行程、车头、车架);
列表。添加(自行车);
}
公共静态void main(字符串[]args)//main方法
{
BMWdriver驱动程序=新的BMWdriver();
driver.startMenu();
驱动程序。InputCardDetails();
驱动程序。inputBikeDetails();
}
}
您拼错了构造函数
public void Driver()
这应该是
public BMWdriver()
然后,您的
列表
属性将被初始化,添加到列表中的NPE将消失。您的构造函数拼写错误
public void Driver()
ArrayList<Vehicles> list;
这应该是
public BMWdriver()
然后,您的列表
属性将被初始化,并且添加到列表时的NPE将消失
ArrayList<Vehicles> list;
}
您正在尝试向列表中添加尚未初始化的数据。
您应该确保在添加任何数据之前对其进行了初始化
}
您正在尝试向列表中添加尚未初始化的数据。
您应该确保在添加任何数据之前对其进行了初始化。我知道,虽然我不清楚如何初始化驱动程序类中的方法,但驱动程序类中的每个方法都需要初始化吗?没有什么比初始化方法更重要的了。但是驱动程序方法负责初始化arraylist。其他方法使用的是一个未初始化的arraylist,它给出了错误,好的,我理解。谢谢你,普里亚马尔!我理解,虽然我不清楚如何初始化驱动程序类中的方法,但是驱动程序类中的每个方法都需要初始化吗?没有什么比初始化方法更重要的了。但是驱动程序方法负责初始化arraylist。其他方法使用的是一个未初始化的arraylist,它给出了错误,好的,我理解。谢谢你,普里亚马尔!