我在第9行(带注释的那个)中得到了nullpointerexception。
我正在尝试将该方法用作shoppingCart类中的参数:
import java.util.*;
public class ShoppingCart {
private Map<String, Purchase> ShoppingCart;
public void add (String product, int price) {
Purchase purchase = new Purchase(product, 1, price);
ShoppingCart.put(product, purchase); //this line doesn't work!
}
public int price() {
Collection<Purchase> total = shoppingCart.values();
}
}
Purchase方法的构造函数是:
public Purchase(String product, int amount, int price) {
主要尝试将产品添加到shoppingCart,这会导致nullpointerexception:
ShoppingCart cart = new ShoppingCart();
cart.add("milk, 3);
我想在地图方面我缺少一些基本的东西。我在这里做错了什么?
答案 0 :(得分:1)
您忘记了实例化地图ShoppingCart = new HashMap<String, Purchase>()
。
顺便说一句,在java中,变量总是以小写字母(camelCase)开头,只有类以大写字母开头(PascalCase)
答案 1 :(得分:0)
您永远不会创建ShoppingCart
对象。这与定义变量时创建对象的C ++不同;所有变量实际上都是对象的引用,你需要明确地创建对象(new
)。
private Map<String, Purchase> ShoppingCart;
答案 2 :(得分:0)
我认为问题在于你没有初始化你的shoppingCart:
private Map<String, Purchase> ShoppingCart= new HashMap<String,Purchase>()