Java 预订应用程序中的NullPointerException
我在以下位置收到一个Java 预订应用程序中的NullPointerException,java,exception,null,nullpointerexception,Java,Exception,Null,Nullpointerexception,我在以下位置收到一个NullPointerException: If(bookingList.size() == 0) , 及 我不确定是什么原因造成的。非常感谢您的帮助 堆栈跟踪 预订例外 轮渡系统 公共级渡船系统{ 私有静态ArrayList bookingList; 专用静态扫描仪userInput=新扫描仪(System.in); 公共渡船系统(){ bookingList=newarraylist(); } 公共静态整型bookingIDExists(字符串ID){ if(booki
NullPointerException
:
If(bookingList.size() == 0)
,
及
我不确定是什么原因造成的。非常感谢您的帮助
堆栈跟踪
预订例外
轮渡系统
公共级渡船系统{
私有静态ArrayList bookingList;
专用静态扫描仪userInput=新扫描仪(System.in);
公共渡船系统(){
bookingList=newarraylist();
}
公共静态整型bookingIDExists(字符串ID){
if(bookingList.size()=0)
返回-1;
对于(int i=0;i
将预订列表的初始化从常规构造函数移动到静态初始化块:
static {
bookingList = new ArrayList<VehicleBooking>();
}
静态{
bookingList=newarraylist();
}
或在声明时对其进行初始化:
private static ArrayList<VehicleBooking> bookingList = new ArrayList<VehicleBooking>();
private static ArrayList bookingList=new ArrayList();
否则,bookingList
将保持null
,直到第一次调用FerryBookingSystem
的构造函数。将bookingList
的初始化从常规构造函数移到静态初始化块:
static {
bookingList = new ArrayList<VehicleBooking>();
}
静态{
bookingList=newarraylist();
}
或在声明时对其进行初始化:
private static ArrayList<VehicleBooking> bookingList = new ArrayList<VehicleBooking>();
private static ArrayList bookingList=new ArrayList();
否则,bookingList
将保持null
,直到第一次调用FerryBookingSystem
的构造函数。您的代码位于:
private static ArrayList<VehicleBooking> bookingList;
私有静态数组列表bookingList;
尚未初始化。请将其初始化。您的代码位于:
private static ArrayList<VehicleBooking> bookingList;
私有静态数组列表bookingList;
尚未初始化。请初始化它。bookingList是FerryBookingSystem的静态属性
您可以在构造函数中初始化它,这对于静态属性来说是无意义的
然后,您永远不会调用构造函数,因为您永远不会实例化Ferrybooking系统
编辑:
在深入研究代码之后,似乎您首先将bookingList声明为static,然后将所有方法标记为static,以解决编译问题
我不认为您真的需要该属性是静态的,所以只需删除属性和所有方法上的静态键:
public class FerryBookingSystem {
private ArrayList<VehicleBooking> bookingList;
并调用此实例的方法:
switch (user){
case 'A':
fbs.addVehicleBooking();
break;
case 'B':
fbs.addRecreationalVehicleBooking();
break;
case 'C':
fbs.displayBookingSummary();
bookingList是Ferrybooking系统的静态属性
您可以在构造函数中初始化它,这对于静态属性来说是无意义的
然后,您永远不会调用构造函数,因为您永远不会实例化Ferrybooking系统
编辑:
在深入研究代码之后,似乎您首先将bookingList声明为static,然后将所有方法标记为static,以解决编译问题
我不认为您真的需要该属性是静态的,所以只需删除属性和所有方法上的静态键:
public class FerryBookingSystem {
private ArrayList<VehicleBooking> bookingList;
public static void main (String [] args) throws IOException{
char user;
FerryBookingSystem fbs=new FerryBookingSystem();
switch (user){
case 'A':
fbs.addVehicleBooking();
break;
case 'B':
fbs.addRecreationalVehicleBooking();
break;
case 'C':
fbs.displayBookingSummary();