gpt4 book ai didi

java - 数组列表中 Java 中的 NullPointerException

转载 作者:行者123 更新时间:2023-11-29 07:49:30 24 4
gpt4 key购买 nike

我正在进行 Java 练习,试图提高我乏善可陈的编程技能。我已经构建了一个项目数组(每个项目都包含一个项目的名称和价格)。这是在我的 GroceryBill 类中完成的,该数组似乎有效。然后我将项目添加到数组但是当我尝试获取数组的总数时我得到 NullPointerException。将其缩短为相关部分(如果我遗漏了任何重要的内容,我可以对其进行编辑)。

这是主类中的代码。

public class InheritanceDiscountBill {
public static void main(String[] args){
// TODO code application logic here
GroceryBill checkout1 = new GroceryBill();
Item orange = new Item("Orange", 0.50);
Item pie = new Item("Pie" , 2.49);
checkout1.addItem(orange);
checkout1.addItem(pie);
checkout1.getTotal();
}
}

元素等级

public class Item{
private String name;
private double price;

public Item (String n, double p){
name = n;
price = p;
}

public String getName(){
return name;
}

public double getPrice(){
return price;
}
}

GroceryBill 类

public class GroceryBill {
Item[] groceryBill;
int counter;

public GroceryBill(){
groceryBill = new Item[10];
counter = 0;
}

public void addItem(Item i){
groceryBill[counter] = i;
counter++;
}

public double getTotal(){
double totalCost = 0;
for (Item i : groceryBill){
totalCost = totalCost + i.getPrice();
System.out.println(i.getPrice());
}
return totalCost;
}
}

当我调用 checkout1.getTotal() 方法然后调用 totalCost = totalCost + i.getPrice(); 时,它不断出现空指针异常并指向。

是不是因为列表不完整,所以它在遍历列表时得到空值?如果是这样,我该如何阻止这种情况发生?我对此很陌生,所以请放轻松并简单地解释一下。我已经阅读了有关该主题的文章,但仍然不知道我做错了什么。

最佳答案

您不能在 getTotal 中正常使用 for-each 循环,因为您的数组有空元素:

//                     vv
groceryBill = new Item[10];

您只向列表中添加了两个项目,因此元素 2-9 都是空的。所以使用一个常规循环,直到 counter

for(int i = 0; i < counter; i++) {
// do stuff with groceryBill[i]
}

使用 for-each 循环你必须做这样的事情:

for(Item item : groceryBill) {
if(item != null) {
// do stuff with non-null element
}
}

但这有点过分,因为您迭代的次数超出了您的需要。

关于java - 数组列表中 Java 中的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22434031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com