Arrays 使用对象数组时出现空指针异常

Arrays 使用对象数组时出现空指针异常,arrays,exception,object,pointers,null,Arrays,Exception,Object,Pointers,Null,我计划建造一个航空系统。我已经使用initSeats初始化了数组,但它仍然会抛出NPE错误。它发生在我从bookMenu调用seatChecker()时 public void initSeats(){ for(int b = 0; b < seatList.length; b++) { initC.setName("null"); initC.setEmail("null"); initC.setCreditNo(0); initC

我计划建造一个航空系统。我已经使用initSeats初始化了数组,但它仍然会抛出NPE错误。它发生在我从bookMenu调用seatChecker()时

public void initSeats(){
    for(int b = 0; b < seatList.length; b++)
    {
     initC.setName("null");
     initC.setEmail("null");
     initC.setCreditNo(0);
     initC.setAddress("null");
     initC.setPassportNo("null");
     seatList[b] = new Seat('A', 0, "null", 0.0, "Available", initC);   
    }

    for(int d = 0; d <= 24; d++)
    {
        seatList[d].setSeatLetter('A');
        seatList[d].setSeatNo(d);
    }
    for(int n = 25; n <= 48; n++)
    {
        seatList[n].setSeatLetter('B');
        seatList[n].setSeatNo(n);
    }
    for(int m = 49; m <= 72; m++)
    {
        seatList[m].setSeatLetter('C');
        seatList[m].setSeatNo(m);
    }
    for(int t = 73; t <= 96; t++)
    {
        seatList[t].setSeatLetter('D');
        seatList[t].setSeatNo(t);
    }
    for(int q = 97; q <= 120; q++)
    {
        seatList[q].setSeatLetter('E');
        seatList[q].setSeatNo(q);
    }
    for(int v = 121; v < 144; v++)
    {
        seatList[v].setSeatLetter('F');
        seatList[v].setSeatNo(v);
    }
    for(int x = 0; x <= 48; x++)
    {
        seatList[x].setSection("Front");
        seatList[x].setPrice(500);
    }
    for(int j = 49; j <= 96; j++)
    {
        seatList[j].setSection("Middle");
        seatList[j].setPrice(250);
    }
    for(int u = 97; u < 144; u++)
    {
        seatList[u].setSection("Back");
        seatList[u].setPrice(100);
    }
}
   public void seatChecker(int index)
   {
    String status = seatList[index].getStatus();
    if(status.equalsIgnoreCase("Available")){
            System.out.println("Seat is Available.");
        }else{
        System.out.println("Seat is not Available. Please Pick Another Seat.");
        bookMenu();
        }
   }

public void bookMenu()
{
    int choice1 = 0;
    int index;
    System.out.println("Where do you want to be seated?");
    System.out.println("[1] Front");
    System.out.println("[2] Middle");
    System.out.println("[3] Back");
    choice1 = sc.nextInt();
    sc.nextLine();
    if(choice1 == 1){
        System.out.print("Choose a seat number (0 - 48): ");
        index = sc.nextInt();
        sc.nextLine();
        seatChecker(index);
    }else if(choice1 == 2){
        System.out.println("Choose a seat number (49 - 96): ");
        index = sc.nextInt();
        sc.nextLine();
        seatChecker(index);
    }else if(choice1 == 3){
        System.out.println("Choose a seat number (97 - 144): ");
        index = sc.nextInt();
        sc.nextLine();
        seatChecker(index);
    }else
    {
        System.out.println("Invalid Choice. Going back to Menu.");
        MainMenu();
    }
}
座位等级

public class Seat{
private char seatLetter;
private int seatNo;
private String section;
private double price;
private String status;
private Customer customerDetails;

 public Seat(char seatLetter, int seatNo, String section, double price, String status, Customer details) 
   {
    this.seatLetter = seatLetter;
    this.seatNo = seatNo;
    this.section = section;
    this.price = price;
    this.status = status;
    this.customerDetails = details;
}

public Customer getCustomerDetails() {
    return customerDetails;
}

public void setCustomerDetails(Customer customerDetails) {
    this.customerDetails = customerDetails;
}

public char getSeatLetter() {
    return seatLetter;
}

public void setSeatLetter(char seatLetter) {
    this.seatLetter = seatLetter;
}

public String getStatus() {
    return status;
}

public void setStatus(String status) {
    this.status = status;
}

public double getPrice() {
    return price;
}

public void setPrice(double price) {
    this.price = price;
}

public int getSeatNo() {
    return seatNo;
}

public void setSeatNo(int seatNo) {
    this.seatNo = seatNo;
}

public String getSection() {
    return section;
}

public void setSection(String section) {
    this.section = section;
}

}

问题可能在于这两行:

String status = seatList[index].getStatus();
if(status.equalsIgnoreCase("Available"))
第一件事可能是
seatList[index]
未初始化。一旦将引用数组声明为:

Seat[] array = new Seat[10];
数组包含
Seat
对象的
10
null
引用。在使用它们之前,您需要实例化它们:

Seat[0] = new Seat();
第二个潜在问题是,此检查:

if(status.equalsIgnoreCase("Available"))
替换为:

if("Available".equalsIgnoreCase(status))
状态
null
的情况下,避免出现任何
null点异常


p.S.请向我们展示
Seat
类,以便更好地理解您的问题。

解决空指针异常非常简单。
可能在seatList的一个索引中没有值。

我已经使用initSeats()中的第一个for循环初始化了数组,但它仍然抛出errorSeat seatList[]=new Seat[144]@ZeroStream请尝试在该方法开始时打印
索引
状态
的值,以便我们可以正确调试它。已试用的System.out.println(seatList[index].getStatus());我仍然在插入代码的那一行得到npe错误。@ZeroStream将其打印为
System.out.println(“index:+index+”对象:+seatList[index])
if("Available".equalsIgnoreCase(status))