gpt4 book ai didi

Java 空指针异常

转载 作者:行者123 更新时间:2023-12-01 14:37:54 25 4
gpt4 key购买 nike

我正在开发一个 Java 项目,目前有 4 个类(Driver、OrdersProcessor、Items 和 Purchasing)当我运行测试时,它告诉我在旁边有 (** * **) 的两行处有一个 NullPointerException 。我不确定他们出了什么问题..

public class OrdersProcessor {

private static Items items = null;

//added
items = new Items(numOrders);

public static void runOrderProcessor(BufferedReader file, int id) {
double grandTotal = 0;
int clientId = 1000 + id;
try {
System.out.println("Reading order for client with id: " + clientId);
file.readLine();
while (true) {
grandTotal += items.buy(file.readLine().split(" ")[0], id); (*****)
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
file.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
StringBuffer writeReport = new StringBuffer();
writeReport.append("----- Order details for client with Id: "
+ clientId + " -----" + "\n");
for (String bought : items.allItems()) {
writeReport.append("Item's Name: " + items.getItem(bought)
+ items.getItem(bought).recipt(id));
writeReport.append("Order Total: "
+ NumberFormat.getCurrencyInstance().format(grandTotal)
+ "\n");
}

}

}

另一个类:

public class Items {

private Map<String, Purchase> items;
private double grandTotal;
private int numOrders;

public Items(int numOrders) {
this.numOrders = numOrders;
reportOrders = new TreeMap <Integer, String>();
items = new TreeMap<String, Purchase>();
grandTotal = 0;

public double buy(String name, int id) {
double price = getItem(name).purchaseItem(id); (*****)
synchronized (lockGT) {
grandTotal = grandTotal + price;
}
return price;
}

最佳答案

在第一种情况下,items 似乎从未设置为值并保持为 null。
在第二种情况下,getItem(name) 返回 null,因此对 .purchaseItem(id) 的调用失败。

为了轻松调试,您可以在 eclipse(或您使用的我们)中设置断点,或者在这些行之前将一些日志消息打印到控制台,以查看对象的当前值是什么。

关于Java 空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16309325/

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