【问题标题】:Java cannot find Symbol - containsKey(Item)? [closed]Java 找不到符号 - containsKey(Item)? [关闭]
【发布时间】:2015-03-07 19:04:37
【问题描述】:

在我的超市结账程序中,当我运行它时,它在addItem 方法的Checkout 类中出现了这个错误:

找不到符号 - 方法 containsKey(Item)

我不明白为什么会出现这个错误,因为我检查了其他两个类(ItemStock),我看不出它们有什么问题。

以下是课程:

import java.text.NumberFormat;
import java.util.HashMap;

public class Checkout {
    private HashMap<Item, Integer> stock;

    /**
     * Constructor for objects of class Checkout. Instantiates the checkout.
     */
    public Checkout() {
        stock = new HashMap<Item, Integer>();
    }


    public void addItem(String itemCode) {
        Stock stock = new Stock();
        if (stock.containsSalesItem(itemCode)) {
            Item item = stock.getItem(itemCode);

            int quantity = 1;
            if (stock.containsKey(item)) {
                Integer quantity = stock.get(item);
                quantity += quantity.intValue();
            }
            stock.put(item, new Integer(quantity));
        }
    }
}

import java.text.NumberFormat;

public class Item {
    private String name;
    private String code;
    private int price;

    /**
     * Constructor for objects of class Item
     */
    public Item(String itemName, String itemCode, int costOfItem) {
        name = itemName;
        price = costOfItem;
        code = itemCode;
    }

    public int getPrice() {
        return price;
    }

    public String getName() {
        return name;
    }

    public String getCode() {
        return code;
    }

}

import java.util.Map;
import java.util.HashMap;
import java.util.Collection;

public class Stock {
    private static Map<String, Item> stock;

    static {
        stock = new HashMap<String, Item>();
        stock.put("001", new Item("Diet Coke 1l Bottle", "001", 299));
        stock.put("002", new Item("Haribo", "002", 100));
        stock.put("003", new Item("Digestive Biscuits", "003", 120));
        stock.put("004", new Item("Teacakes", "004", 80));
        stock.put("005", new Item("Bacon", "005", 399));
        stock.put("006", new Item("Bread", "006", 213));
    }

    public Collection<Item> getItems() {
        return stock.values();
    }

    public Item getItem(String itemCode) {
        return stock.get(itemCode);
    }

    public boolean containsSalesItem(String itemCode) {
        if (stock.containsKey(itemCode)) {
            return stock.containsKey(itemCode);
        } else {
            return false;
        }
    }
} 

感谢您的帮助和建议。

【问题讨论】:

  • 你的Stock 类有containsKey 方法吗?
  • 是那个类中的 containsSalesItem (String itemCode) 方法?
  • 什么? containsSalesItemcontainsKey... 你看不出区别吗?
  • 我现在已经对其进行了更改,因此它具有 containsKey 而不是 containsSalesItems,但现在我遇到了另一个问题,因为在 stock 类中仍然使用相同的方法它会出现错误:if (stock. containsKey(item)) - 项目不能转换为 java.lang.string
  • if (stock.containsKey(item)) - item 无法转换为 java.lang.string

标签: java hashmap key containskey


【解决方案1】:

您的 Stock 类没有 containsKey() 方法

【讨论】:

  • 它确实有一个 containsKey 方法,但它的名称不正确(containsSalesItems),我已将其更改为 containsKey()。但现在我又遇到了上面列出的另一个错误
猜你喜欢
  • 2013-02-02
  • 1970-01-01
  • 2018-09-28
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-23
相关资源
最近更新 更多