【发布时间】:2022-01-30 08:53:09
【问题描述】:
我还是编程新手,我想制作一个程序,该程序将接收用户的食物订单,直到用户按“n”停止。但我似乎无法让它像我想要的那样工作。
我希望我的输出是这样的。
Buy food: Burger
Order again(Y/N)? y
Buy Food: Pizza
Order again(Y/N)? n
You ordered:
Burger
Pizza
但我现在的输出是这样的。
Buy food: Burger
Order again(Y/N)? y
Buy food: Pizza
Order again(Y/N)? n
You ordered:
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "Array.getFoodName()" because "food_arr2[i]" is null
at Food.main(Food.java:50)
这是我的代码:
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
Food food = new Food();
Array[] food_arr;
boolean stop = false;
String foodName;
int k = 1;
int j = 0;
while(stop == false) {
food_arr = new Array[k];
System.out.print("Buy food: ");
foodName = s.next();
food_arr[j] = new Array(foodName);
food.setFoodArray(food_arr);
System.out.print("Order again(Y/N)? ");
String decide = s.next();
if(decide.equalsIgnoreCase("y")) {
k++;
j++;
}
else if(decide.equalsIgnoreCase("n")) {
stop = true;
}
}
Array[] food_arr2 = food.getFoodArray();
for (int i = 0; i < food_arr2.length; ++i) {
System.out.println("\nYou ordered: ");
System.out.println(food_arr2[i].getFoodName()); //This line is the error according to my output
}
}
我不知道如何解决这个问题,我希望有人能帮助我。
【问题讨论】:
-
错误来了,因为
food.getFoodArray()返回null。你为什么不尝试通过if(food.getFoodArray() == null)检查它是否为null? -
@SambhavKhandelwal 异常并不表示数组本身为空,它表示数组(
foo_arr2[i])索引i处的值为空
标签: java arrays getter-setter encapsulation