嘿伙计们,我正在为学校做一个项目并且遇到一些麻烦,我有一个变量" reservationNumber"并且我试图检查用户输入的数字是否在数组中,如果不是,则返回一个字符串,表示找不到该数字。它工作正常并在有有效输入时显示正确的信息,但是当检测到无效输入时,它会给出null.pointer.exception错误。我试着编写它,这样如果没有检测到数字,私有方法返回-1,那么当我调用tickerInformation方法时,如果那个变量' ticket'返回-1然后它返回"无效的预订号"。这是引发错误的地方,只有在我输入无效号码时才会发生,请帮忙。
public void ticketInformation(String reservationNumber)
{
int ticket = searchArray(reservationNumber);
if (ticket == -1)
{
System.out.println("The reservation number entered was n0t found");
}
else
{
System.out.print("\n" + ticketSale[ticket].toString());
}
}
private int searchArray(String reservationNumber)
{
for (int i = 0; i < ticketSale.length; i++)
{
if (ticketSale[i].getReservationNumber().equals(reservationNumber))
{
return i;
}
}
return -1;
}
答案 0 :(得分:0)
ticketSale [i] .getReservationNumber()。equals(reservationNumber)有问题。分享数组&#34; ticketSale&#34;的声明和init。如果ticketSale数组用于抽象数据类型,那么为什么使用String调用equal?
答案 1 :(得分:0)
您没有发布整个代码,但我认为当您输入无效号码作为预订号码时,它不会分配给相关对象的实例变量。所以getReservationNumber()
可能会返回null。
答案 2 :(得分:0)
添加空检查
val df1 = Seq(
(1, "book1", 1), (2, "book2", 2), (3, "book3", 3), (4, "book4", 4)
).toDF("primary_key", "book", "number")
val df2 = Seq(
(1, "book1", 1), (2, "book8", 8), (3, "book3", 7), (5, "book5", 5)
).toDF("primary_key", "book", "number")
最诚挚的问候,
勒凯什
答案 3 :(得分:0)
添加regex以验证您的输入是有效号码"\\d+"
:
public void ticketInformation(String reservationNumber)
{
String regex = "\\d+";
if(!reservationNumber.matches(regex))
{
System.out.println("The reservation number entered was n0t found");
}
int ticket = searchArray(reservationNumber);
if(ticket == -1)
{
System.out.println("The reservation number entered was n0t found");
}
else
{
System.out.print("\n" + ticketSale[ticket].toString());
}
}
您可能希望验证searchArray
,特别是如果它未在ticketInformation()
中相互依赖使用。