【发布时间】:2026-02-20 20:55:02
【问题描述】:
我已经关注了 nullpointerexception 的相关链接,例如:
How to solve java.lang.NullPointerException error?
What is a NullPointerException, and how do I fix it?
我的大部分空指针异常都是从代码中整理出来的,但我无法得到以下空指针异常的原因。
Exception in thread "main" java.lang.NullPointerException
at Calculate.main(Calculate.java:9)
我在调试模式下运行并看到“sc.items.add(cd)”(Calculate.java 的第 9 行);一片空白!谁能解释一下原因。
我正在实现访问者模式。我正在计算不同项目的成本。一项是CD。下面是代码:
ShoppingCart.java
import java.util.ArrayList;
public class ShoppingCart {
ArrayList<Visitable> items;
public double calculatePostage(){
//Create a visitor
PostageVisitor visitor = new PostageVisitor();
// iterate through all items
for( Visitable item: items){
item.accept(visitor);
}
double postage = visitor.getTotalPostage();
return postage;
}
}
计算.java
public class Calculate {
public static void main(String[] args) {
// TODO Auto-generated method stub
ShoppingCart sc = new ShoppingCart();
CD cd = new CD(100);
sc.items.add(cd);
double postageInMain = sc.calculatePostage();
System.out.println(postageInMain);
}
}
CD.java
public class CD implements Visitable {
private double price;
@Override
public void accept(Visitor visitor) {
// TODO Auto-generated method stub
}
public CD(double price){
this.price = price;
}
double getPrice(){
return price;
}
}
PostageVisitor.java
public class PostageVisitor implements Visitor {
private double totalPostageForCart;
public void visit (CD cd){
totalPostageForCart += cd.getPrice();
}
public void visit (DVD dvd){
totalPostageForCart += dvd.getPrice();
}
// return the internal state
public double getTotalPostage(){
return totalPostageForCart;
}
}
Visitable.java
public interface Visitable {
public void accept(Visitor visitor);
}
访问者.java
public interface Visitor {
public void visit(Book book);
public void visit(CD cd);
}
【问题讨论】:
-
ArrayList
项;未初始化....