Как: использование пользовательского класса в качестве параметра карты - PullRequest
0 голосов
/ 23 марта 2012

Я получаю нулевое исключение в строке 9 (с комментарием).

Я пытаюсь использовать метод в качестве параметра в классе 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();

        }   
}

Конструктор для метода покупки:

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

Main пытается добавить товар в shoppingCart, что приводит к нулевому исключению:

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

Полагаю, я упускаю что-то фундаментальное, когда дело доходит до Карт. Что я здесь не так делаю?

Ответы [ 3 ]

1 голос
/ 23 марта 2012

Вы забыли создать экземпляр своей карты ShoppingCart = new HashMap<String, Purchase>().

Кстати, в Java переменные всегда начинаются со строчной буквы (camelCase), только классы начинаются с прописной буквы (PascalCase)

0 голосов
/ 23 марта 2012

Я думаю, что проблема в том, что вы не инициализируете свою корзину:

private Map<String, Purchase> ShoppingCart= new HashMap<String,Purchase>()
0 голосов
/ 23 марта 2012

Вы никогда не создадите объект ShoppingCart. Это не похоже на C ++, в котором объект создается при определении переменной; все переменные на самом деле являются ссылками на объекты, и вам необходимо подробно создать объекты (new).

Кстати, эта строка вызывает ошибку компиляции (shoppingCart должен быть в нижнем регистре)

private Map<String, Purchase> ShoppingCart;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...