字符串数组中的 NullPointerException

NullPointerException In a String Array

提问人:Jwan 提问时间:5/12/2020 更新时间:5/12/2020 访问量:54

问:

当我运行此方法以提供有关客户的所需数据时 - 这是一个飞行俱乐部程序 - 它不返回任何内容,就好像从未输入过任何内容一样。

NullPointerException 主要是问题所在,因为当我运行另一个方法(也将遵循)以提供一些数据时,才会出现 NullPointerException,但仅在没有输入数据时出现:

第一种方法提供有关用户的数据:

public static void ausgabeBuchung(String[] name, String[] surname, int[] time, int[] flightNumber, String[] description, String[] reservation) {
    System.out.println("Alle ihrer Buchungen");
    for (int i = 0; i < name.length-1; i++) {
        System.out.println("the flight number: " + flightNumber[i]);
        System.out.println("the description: " + description[i]);
        System.out.println("time of the reservation: " + time[i]);
        System.out.println("name of the person: " + name[i]);
        System.out.println("Surname of the person: " + surname[i]);
        System.out.println("Reservation type: " + reservation[i] + "\n");
    }
}

第二种检查是否有航班可用的方法:

public static void verfügbar( String[] name, String[] description, int[] time, String[] reservation) {
    for (int i = 0; i < description.length; i++) {
        if (vorname[i] == " ") {
            System.out.println("The flight with the description: " + description[i] + " is free the whole day");
        } else if (buchung[i].equals("Ganze Tag")) {
            System.out.println("The flight with the description: " + description[i] + " is reserved the whole day");
        }
        else{
            System.out.println("The Flight with the description " + description[i] + " ist from: " + time[i]++ + " till: " + time[i] + " reserved");
        }
    }
}
Java 字符串 方法 参数 nullPointerException

评论

1赞 Nikolai Shevchenko 5/12/2020
提供输入数据
1赞 codebod 5/12/2020
哪一行和哪个变量抛出错误?
0赞 username 5/12/2020
你必须说出你从哪里得到异常。此外,如果你有问题,你应该非常努力地自己解决它们,但似乎你没有这样做,因为你已经发布了关于同一个项目的多个问题。使用调试器找出问题所在。
1赞 dehasi 5/12/2020
if (vorname[i].equals(" "))

答:

-1赞 atomos203 5/12/2020 #1
i < name.length-1

是你的问题,因为你的循环总是会省略姓氏。

0赞 zlb323 5/12/2020 #2

看起来您正在使用一组数组的索引作为某种 suedo-Object。在第一种方法中可能遇到的问题是 name 数组中的值数与其他数组不同。如果这些数组的每个索引都彼此相关,那么为什么不创建一个 Reservation 对象呢?

Public class Reservation {
   String Name;
   String surname;
   int time;
   int flightNumber;
   String description;
   String reservation;
}

然后只创建一个 Reservations 数组。

这将使迭代变得更加容易,而不必担心保持数组大小相同。

0赞 0xh3xa 5/12/2020 #3

在使用之前检查这些数组中是否有任何一个不是 null,可能是在调用该方法发送一些 null 数组时

您应该检查是否有任何参数为 null

public static void ausgabeBuchung(String[] name, String[] surname, int[] time, int[] flightNumber, String[] description, String[] reservation) {
    if ( name == null || surename == null || time == null || flightNumber == null || description == null || reservation == null ) {
      throw new IllegalArgumentException("Please enter valid arrays");
    }
}