这是我的学校作业。我需要一个库存系统,当用户键入新产品时,该系统会自动更新产品ID。我创建了一个名为Product的对象数组,其中包含4个属性(名称,ID,价格,数量)。 ID不应该需要用户输入。
这部分位于input()方法中,该方法与Object不同。我没有将ID传递给对象类,就像我对其他三个属性一样。
x[i] = new Product(name,price,stock);
id = x[i].setID();
对象类的一部分:
/**
* Constructor
*/
public Product(){
id = 0; name = ""; price = 0.00; quantity = 0;
}
public Product( String n, double p, int q){
setName(n); setPrice(p); setQuantity(q);
}
public void setID(){
this.id = id++;
}
谢谢。
答案 0 :(得分:1)
你所拥有的东西是行不通的,因为id
是一个实例变量。这意味着您创建的每个产品的ID都为0.在您创建的每个产品上调用setID()
都会将avery产品的ID设置为1.
你需要一个static
计数器,它属于该类,而不是它的每个实例:
public class Product {
private static int nextId = 0;
...
public Product(String name, double price, int quantity) {
this.id = Product.nextId;
Product.nextId++;
this.name = name;
this.price = price;
this.quantity = quantity;
}
}
请注意,这在多线程环境中效果不佳,而且双倍是价格的不错选择,但您稍后会了解到。
有关实例和静态变量的更多信息,请参阅the Java tutorial。
答案 1 :(得分:0)
您是否在寻找为每个Product对象生成唯一ID的方法?如果是这样,您现在编码它的方式不起作用,因为每个Product都有自己的id,它完全独立于所有其他Product对象。有几种方法可以解决这个问题: -