我目前正在uni学习Java,遇到此问题:
public class simpleStockManager {
private String sku;
private String name;
private double price;
public void newItem(String sku, String name, double price) {
this.sku = sku;
this.name = name;
this.price = price;
}
public String getItemName(String sku) {
return name;
}
}
我已经声明了一个类和一些实例变量,我尝试使用sku
访问项目。
因此,如果我按此顺序声明3个项目:
simpleStockManager sm = new simpleStockManager();
sm.newItem("1234", "Jam", 3.25);
sm.newItem("5678", "Coffee", 4.37);
sm.newItem("ABCD", "Eggs", 3.98);
当我尝试使用getItemName
的{{1}}方法时,它应该返回sku == "5678"
,但它返回的是"Coffee"
。
我认为这是最新声明的项目,它会覆盖前一个项目,但我不知道如何解决。
任何帮助将不胜感激。
答案 0 :(得分:1)
每次调用newItem
都会更改实例变量的值。
您将始终获得m.newItem("ABCD", "Eggs", 3.98);
设置的最后一个值
如果您想使用 sku 作为存储多个变量的键,则可以使用Map
例如:
class SimpleStockManager{
// The key of your map will be sku,
//and the name and the price can be for exemple in a Product class
private HashMap<String, Product> products = new HashMap<>();
public void newItem(String sku, String name, double price){
// A call to newItem will create a new Product and store it
products.put(sku, new Product(name, price));
}
public String getItemName(String sku){
if (products.containsKey(sku)){
return products.get(sku).getName();
}else {
return " Product not found...";
}
}
}