Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';我不明白为什么我';我得到一个空指针错误_Java_Arraylist_Nullpointerexception - Fatal编程技术网

Java Can';我不明白为什么我';我得到一个空指针错误

Java Can';我不明白为什么我';我得到一个空指针错误,java,arraylist,nullpointerexception,Java,Arraylist,Nullpointerexception,我对java编码和堆栈交换都很熟悉。我一直在尝试实践这个汽车经销商计划。当我试图将一辆汽车或一辆自行车添加到一个车辆列表中时,我总是会遇到一个空指针错误,我似乎不知道为什么,我几乎肯定我把东西弄错了,放在了错误的地方,但我不知道哪一个去了哪里。我使用了一个driver,一个Vehicles超类,以及Cars和Bikes作为继承自Vehicles的两个子类。 道歉如果我对任何事情不清楚,任何帮助都将不胜感激。谢谢 public class BMWdriver { ArrayList<Veh

我对java编码和堆栈交换都很熟悉。我一直在尝试实践这个汽车经销商计划。当我试图将一辆汽车或一辆自行车添加到一个车辆列表中时,我总是会遇到一个空指针错误,我似乎不知道为什么,我几乎肯定我把东西弄错了,放在了错误的地方,但我不知道哪一个去了哪里。我使用了一个driver,一个Vehicles超类,以及Cars和Bikes作为继承自Vehicles的两个子类。 道歉如果我对任何事情不清楚,任何帮助都将不胜感激。谢谢

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,它给出了错误,好的,我理解。谢谢你,普里亚马尔!