gpt4 book ai didi

java - 数组中出现空指针异常

转载 作者:行者123 更新时间:2023-11-30 04:38:05 26 4
gpt4 key购买 nike

我从这段代码中收到一个空异常错误,但我不确定是什么原因导致的。数组 itemcatalog 已填充为 i =0 到 8。我是 java 新手,因此我们将不胜感激。错误消息指向 while 语句的行。谢谢

public class ItemCatalog {

private static ItemCatalog instance = new ItemCatalog();
private Item itemCatalog[] = new Item[9];

private ItemCatalog(){
};

public static synchronized ItemCatalog getInstance() {
return instance;
}

public void populateCatalog()
{
itemCatalog[0] = new Item("bb","Baked Beans",new BigDecimal("0.35"));
itemCatalog[1] = new Item("cf","Cornflakes",new BigDecimal("1.00"));
itemCatalog[2] = new Item("s0","Sugar",new BigDecimal("0.50"));
itemCatalog[3] = new Item("tb","Tea Bags",new BigDecimal("1.15"));
itemCatalog[4] = new Item("ic","Instant Coffee",new BigDecimal("2.50"));
itemCatalog[5] = new Item("b0","Bread",new BigDecimal("0.50"));
itemCatalog[6] = new Item("s0","Sausages",new BigDecimal("1.30"));
itemCatalog[7] = new Item("e0","Eggs",new BigDecimal("0.75"));
itemCatalog[8] = new Item("m0","Milk",new BigDecimal("0.65"));
}

public BigDecimal getPrice(String itemCode)
{

int i = 0;
while (!itemCode.equals(itemCatalog[i].getItemCode()))
{
i++;
}
BigDecimal itemPrice = itemCatalog[i].getItemprice();
return itemPrice;
}
}

我解决了这个问题。我正在填充主类中的目录,该目录给出了空异常错误。我在 jframe 中实例化它并且它有效。以下代码解决了该问题,但是这是填充目录的最佳位置吗?

private void saleButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           

String itemCode = this.itemCodeinput.getText();
int itemQuantity =Integer.parseInt(this.itemQuantityinput.getText());

ItemCatalog catalog = ItemCatalog.getInstance();

catalog.populateCatalog();
BigDecimal price = catalog.getPrice(itemCode);
itemCostoutput.setText(price.toString());
}

最佳答案

如果您的 itemCode 与 itemCatalog 中的任何条目都不匹配,那么最终

  while (!itemCode.equals(itemCatalog[i].getItemCode()))
{
i++;
}

会将 i 增加到 11,在这种情况下 itemCatalog[11] 要么为空,要么越界。

如果添加,您应该使用 for 循环来迭代 itemCatalog:

for (int i = 0; i < itemCatalog.length; i++) {
if (itemCode.equals(itemCatalog[i].getItemCode()) {
return (BigDecimal) itemCatalog[i].getItemprice();
}
}

return null // you can change this from null to a flag
// value for not finding the item.

关于java - 数组中出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12942535/

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