Java 未知NullPointerException

Java 未知NullPointerException,java,arrays,nullpointerexception,Java,Arrays,Nullpointerexception,我正在编写一个简单的类来模拟飞机预订系统。不幸的是,我的计划一直被多个空指针异常打断,我在任何地方都找不到它们。以下是我完成的工作: import java.util.*; public class airplane { boolean[] seats; Scanner scan = new Scanner(System.in); public airplane(int num_of_seats) { boolean[] seats = new b

我正在编写一个简单的类来模拟飞机预订系统。不幸的是,我的计划一直被多个空指针异常打断,我在任何地方都找不到它们。以下是我完成的工作:

import java.util.*;
public class airplane
{
    boolean[] seats;
    Scanner scan = new Scanner(System.in);
    public airplane(int num_of_seats)
    {
        boolean[] seats = new boolean[num_of_seats];
        for (int counter = 0; counter < num_of_seats; counter++)
        {
            seats[counter] = true;
        }
    }
    public boolean seatFirstClass(int seat)
    {
        if ( seat <= seats.length / 4 )
            return true;
        else
            return false;
    }
    public void seatsReserveFirstClass()
    {
        for (int seat = 0; seat < seats.length; seat++)
        {
            if (seats[seat] == true && seat <= seats.length / 4)
            {
                seats[seat] = false;
                System.out.print("I have reserved one seat in first class. Please tell the passenger to enjoy their flight with these airlines! ");
                break;
            }
        }
        System.out.print("I could not find a seat in first class. Can the passenger switch to economy? (0 for no, 1 for yes) ");
        int choice = scan.nextInt();
        if (choice == 0)
            System.out.print("I could not add passenger due to lack of a seat.");
        else if (choice == 1)
        {
            this.seatsReserveEconomy();
        }
    }
    public void seatsReserveEconomy()
    {
        for (int seat = 0; seat < seats.length; seat++)
        {
            if (seats[seat] == true && seat > seats.length / 4)
            {
                seats[seat] = false;
                System.out.print("I have reserved a seat in economy. Please tell the passenger to enjoy their flight with these airlines! ");
                break;
            }
        }
        System.out.print("I could not find a seat in economy. Can the passenger switch to first class? (0 for no, 1 for yes) ");
        int choice = scan.nextInt();
        if (choice == 0)
            System.out.print("I could not add the passenger due to a lack of seats.");
        else if (choice == 1)
            this.seatsReserveFirstClass();
    }
    public void planeClear()
    {
        for (int seat = 0; seat < seats.length; seat++)
        {
            seats[seat] = true;
        }
    }
    public void seatUnReserve(int seat)
    {
        if (seat < seats.length)
        {
            if (seats[seat] == false)
            {
                seats[seat] = true;
                System.out.printf("Seat %d has been unreserved.\n", seat);
            }
            else
            {
                System.out.print("The seat you have entered is already unreserved.\n");
            }
        }
        else
        {
            System.out.printf("There is no seat number %d on this plane.\n", seat);
        }
    }
}
如果运行这个程序,就会出现可怕的NullPointException错误,我不知道是什么调用了这个beast

Exception in thread "main" java.lang.NullPointerException
at airplane.seatsReserveFirstClass(airplane.java:22)
at Test.main(Test.java:15)

这是一名现场成员:

[]席

Scanner scan = new Scanner(System.in);
public airplane(int num_of_seats)
{
在这里,使用局部变量对字段成员进行阴影处理,而不是接触另一个变量

    boolean[] seats = new boolean[num_of_seats];

    for (int counter = 0; counter < num_of_seats; counter++)
    {
        seats[counter] = true;
    }
}
boolean[]seats=新的boolean[num_of_seats];
对于(int counter=0;counter
应该是这样的:

public airplane(int num_of_seats)
{
    seats = new boolean[num_of_seats];
    for (int counter = 0; counter < num_of_seats; counter++)
    {
        seats[counter] = true;
    }
}
公共飞机(座位总数)
{
seats=新布尔值[num_of_seats];
对于(int counter=0;counter
这是一个字段成员:

[]席

Scanner scan = new Scanner(System.in);
public airplane(int num_of_seats)
{
在这里,使用局部变量对字段成员进行阴影处理,而不是接触另一个变量

    boolean[] seats = new boolean[num_of_seats];

    for (int counter = 0; counter < num_of_seats; counter++)
    {
        seats[counter] = true;
    }
}
boolean[]seats=新的boolean[num_of_seats];
对于(int counter=0;counter
应该是这样的:

public airplane(int num_of_seats)
{
    seats = new boolean[num_of_seats];
    for (int counter = 0; counter < num_of_seats; counter++)
    {
        seats[counter] = true;
    }
}
公共飞机(座位总数)
{
seats=新布尔值[num_of_seats];
对于(int counter=0;counter
赫尔曼敏锐的目光为你找到了答案,一切就绪!!不管怎样,我为将来提供帮助

您可以使用JavaIDE,eclipse是很好的一个,来开发程序。我相信其中一个非常重要的特性是调试,它使您能够完全控制应用程序并快速跟踪异常

下面是如何从eclipse调试应用程序的快速教程(有关异常断点,请参阅4.3)


赫尔曼敏锐的目光为你找到了答案,一切就绪!!不管怎样,我为将来提供帮助

您可以使用JavaIDE,eclipse是很好的一个,来开发程序。我相信其中一个非常重要的特性是调试,它使您能够完全控制应用程序并快速跟踪异常

下面是如何从eclipse调试应用程序的快速教程(有关异常断点,请参阅4.3)


“…可怕的NullPointException错误出现了,我不确定这头野兽叫什么。”
——异常堆栈跟踪会告诉你!你的stacktrace在哪里,它告诉你哪一行抛出NPE?不要忽略异常消息--研究它们!线程“main”java.lang.NullPointerException at Planet.seatsReserveFirstClass(Planet.java:63)at test.main(test.java:58)中出现异常,那么Planet.java 63是哪一行呢?同样,这些消息告诉您足够的信息来寻找解决方案,尽管您的答案可能在Hernan的答案下面。但关键是不要忽略异常stacktrace消息,因为它们是关键的。如果你想帮助别人理解你的代码,请学习使用Java命名约定。啊,很抱歉。我不知道(对java来说是全新的)。谢谢,知道这一点很好。
“…可怕的NullPointException错误出现了,我不确定这头野兽叫什么。”
——异常堆栈跟踪会告诉你!你的stacktrace在哪里,它告诉你哪一行抛出NPE?不要忽略异常消息--研究它们!线程“main”java.lang.NullPointerException at Planet.seatsReserveFirstClass(Planet.java:63)at test.main(test.java:58)中出现异常,那么Planet.java 63是哪一行呢?同样,这些消息告诉您足够的信息来寻找解决方案,尽管您的答案可能在Hernan的答案下面。但关键是不要忽略异常stacktrace消息,因为它们是关键的。如果你想帮助别人理解你的代码,请学习使用Java命名约定。啊,很抱歉。我不知道(对java来说是全新的)。谢谢,很高兴知道。