2012-03-23 36 views
0

我在第9行(帶註釋的那個)中獲取了nullpointerexception。如何使用自定義類作爲Map參數

我試圖用一種方法,在該購物車類parametre:

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(); 

     } 
} 

的購買方式的構造是:

public Purchase(String product, int amount, int price) { 

主試圖將產品添加到導致nullpointerexception的shoppingCart:

ShoppingCart cart = new ShoppingCart(); 
cart.add("milk, 3); 

我想我失蹤了當涉及到Google地圖時,這是一個基礎。我在這裏做錯了什麼?

+0

這是芬蘭語,所以不得不做一些翻譯。下次會更仔細地做。 – Mark 2012-03-23 10:52:11

+0

創建地圖對象。也可以按照駱駝外殼的變量名稱。 – 2012-03-23 10:55:07

回答

0

您從不創建ShoppingCart對象。這不像C++中定義變量時創建對象;所有變量實際上都是對象的引用,並且您需要明確地創建對象(使用new)。

順便說一句,這條線會導致編譯錯誤(購物車應該是小寫)

private Map<String, Purchase> ShoppingCart; 
+0

哦,現在明白了。謝謝! – Mark 2012-03-23 10:50:07

1

你忘了實例化地圖ShoppingCart = new HashMap<String, Purchase>()

順便說一句,在Java中,變量總是以一個小寫字母(駝峯),只有上課的時間以大寫字母開始(PascalCase)

+0

業餘的錯誤:)謝謝! – Mark 2012-03-23 10:50:35

0

我覺得現在的問題是,你不初始化shoppingCart:

private Map<String, Purchase> ShoppingCart= new HashMap<String,Purchase>() 
相關問題