【发布时间】:2015-03-07 19:04:37
【问题描述】:
在我的超市结账程序中,当我运行它时,它在addItem 方法的Checkout 类中出现了这个错误:
找不到符号 - 方法 containsKey(Item)
我不明白为什么会出现这个错误,因为我检查了其他两个类(Item 和 Stock),我看不出它们有什么问题。
以下是课程:
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) 方法?
-
什么?
containsSalesItem和containsKey... 你看不出区别吗? -
我现在已经对其进行了更改,因此它具有 containsKey 而不是 containsSalesItems,但现在我遇到了另一个问题,因为在 stock 类中仍然使用相同的方法它会出现错误:if (stock. containsKey(item)) - 项目不能转换为 java.lang.string
-
if (stock.containsKey(item)) - item 无法转换为 java.lang.string
标签: java hashmap key containskey