I';我想知道为什么我';我得到一个java.lang.NullPointerException

I';我想知道为什么我';我得到一个java.lang.NullPointerException,java,if-statement,for-loop,Java,If Statement,For Loop,我得到了一个java.lang.NullPointerException@if的开头:if(name.equalsIgnoreCase(passengers[I].getName())。这是当我输入错误的名称时。总共有500名乘客。为什么?(这只是我代码的一小部分) System.out.println(“预订取消:”); System.out.println(“------------------”); name=null; 系统输出打印(\n乘客姓名:); name=scan.nextLin

我得到了一个
java.lang.NullPointerException
@if的开头:
if(name.equalsIgnoreCase(passengers[I].getName())
。这是当我输入错误的名称时。总共有500名乘客。为什么?(这只是我代码的一小部分)

System.out.println(“预订取消:”);
System.out.println(“------------------”);
name=null;
系统输出打印(\n乘客姓名:);
name=scan.nextLine();
对于(int i=0;i<500;i++)
{
if(name.equalsIgnoreCase(乘客[i].getName())
{
乘客[i].setName(空);
乘客[i]。设置地址(空);
乘客[i].setEmail(空);
乘客[i].setOnFlight(0);
乘客[i].setFlightBooked(假);
航班[i]。减少预定座位数();
bookedseatstotal=bookedseatstotal-1;
System.out.println(“\n乘客的详细信息已从系统中删除。”);
System.out.println(“预订已取消。\n”);
打破
}否则如果(i==499)
{
System.out.println(“\n未使用此名称进行预订。\n”);
打破
}
}

什么是
乘客
?它是长度为500的数组吗? 数组中是否有空passager? 也许for循环可以变成

for (int i = 0; i < passengers.length; i++) {
  if (passengers[i] != null && passengers[i].getName() != null) {
    ...
for(int i=0;i
添加此防护:

if (name != null &&
    passengers[i] != null && 
    name.equalsIgnoreCase(passengers[i].getName()))
{
    //...code here
    if (flights[i] != null){
       flights[i].decreaseBookedSeats();
    } else {
       // should not happen
    }
    // .. more code
 }
您必须确保
name
不为空。由于
nextLine
可能返回空值,因此必须检查
乘客[i]
航班[i]
检查应该是不必要的,但是如果在代码中的任何地方,您可能会将数组中的其中一个单元格设置为
null
,那么您必须始终检查它们是否为null


您也可以检查
航班!=null
乘客!=null
。但是,老实说,您应该能够通过将值打印到控制台或使用调试器轻松找到。NullReference异常通常很容易找到和修复。

确保
乘客
在循环之前已正确初始化。您可以编写c吗获取乘客的ode?乘客数组,在哪里初始化?打印出
名称
乘客[i]
等的值,以精确查看
空值是什么
因为您有空指针(“引用”),所以您得到的是空指针异常。您知道它在哪里,并且只涉及三个指针/引用—名称、乘客和乘客的第i个元素。插入println语句以打印出这些值并查看哪个值为空是一件小事。或者在调试器中设置断点并检查它们。
name
flights[i]
也可以为空。
if (name != null &&
    passengers[i] != null && 
    name.equalsIgnoreCase(passengers[i].getName()))
{
    //...code here
    if (flights[i] != null){
       flights[i].decreaseBookedSeats();
    } else {
       // should not happen
    }
    // .. more code
 }