ItemCount not updating



这是我的输出:

项目编号:1,产品名称:X系列X盒,供应商:Microsoft, Department笔记本电脑,台式机;主机成本:449.99

项目编号:1,产品名称:Playstation 5,供应商:Sony, Department laptop,台式机&主机成本:449.99

项目编号:1,项目名称:Oculus Quest 2,供应商:Facebook, Department笔记本电脑,台式电脑&主机成本:299.0

我不明白为什么项目代码没有更新。我做错了什么?

public class OrderApp {
public static void main(String[] args) {
int MAX = 5;
int itemCount = 0;
OrderItem[] stock = new OrderItem[MAX]; // Initialise empty array with MAx as the size limit
stock = addThreeItems(stock, itemCount);
itemCount += 3; // cannot return 2 variables within one method therefore itemCount must be
// increased outside of method
testPrint(stock, itemCount); // Prints all current items
}
public static void testPrint(OrderItem[] stock, int itemCount) { // Prints all current items
for (int i = 0; i < itemCount; i++) {
System.out.println(stock[i].toString());
}
}
public static OrderItem[] addThreeItems(OrderItem[] stock, int itemCount) { // Adds 3 predetermined items
OrderItem itm1 = new OrderItem("X Box Series X", "Microsoft", 449.99, Department.COMPUTING);
OrderItem itm2 = new OrderItem("Playstation 5 ", "Sony", 449.99, Department.COMPUTING);
OrderItem itm3 = new OrderItem("Oculus Quest 2", "Facebook", 299.00, Department.COMPUTING);
stock[itemCount++] = itm1; // ++ iterates AFTER being used making it useful in getting a value, using it
// and changing it all in one line
stock[itemCount++] = itm2;
stock[itemCount++] = itm3;
return stock; // must use return statement to affect the array
}

}

order item class:

public class OrderItem {
private int itemCode = 1;
private String itemName;
private String itemSupplier;
private double itemCost;
private Department dept;
public OrderItem(String itemName, String itemSupplier, double itemCost, Department dept) {
this.itemName = itemName;
this.itemSupplier = itemSupplier;
this.itemCost = itemCost;
this.dept = dept;


}
public String getDetails() {
String res = "Item Name: "+getItemName()+", Supplier: "+getSupplier()+", Department: "+dept+", Cost: "+getitemCost();
return res;
}
public int useNextCode() {
this.itemCode = useNextCode();
itemCode++;
return itemCode;
}
public int getItemCode() {

return this.itemCode;
}
public String getItemName() {

return this.itemName;
}
public String getSupplier() {

return this.itemSupplier;

}
public double getitemCost() {
return this.itemCost;
}
public String toString() { 
String res = "Item Code: "+getItemCode()+", Item Name: "+getItemName()+", Supplier: "+getSupplier()+", Department "+dept+" Cost: "+getitemCost();
return res;


}

}

您没有设置itemCode的值-它始终具有默认值1

在构造函数中添加参数int itemCode,并添加以下行:

this.itemCode = itemCode

然后,按如下方式修改addThreeItems:

public static OrderItem[] addThreeItems(OrderItem[] stock, int itemCount) { // Adds 3 predetermined items
stock[itemCount] = new OrderItem(itemCount, "X Box Series X", "Microsoft", 449.99, Department.COMPUTING);
itemCount++;
stock[itemCount] = new OrderItem(itemCount, "Playstation 5 ", "Sony", 449.99, Department.COMPUTING);
itemCount++;
stock[itemCount] = new OrderItem(itemCount, "Oculus Quest 2", "Facebook", 299.00, Department.COMPUTING);
itemCount++;
return stock; // must use return statement to affect the array
}

每次创建OrderItem的新实例时,当前都在初始化一个新的'itemCode'整数。

如果你想更新'itemCode',你需要改变OrderItem中的'itemCode'声明为:

private static int itemCode = 1;

如果你在构造函数中赋值这个会更好:

private final int itemCode;
private static int nextCode = 1;
private String itemName;
private String itemSupplier;
private double itemCost;
private Department dept;
public OrderItem(String itemName, String itemSupplier, double itemCost, Department dept) {
this.itemName = itemName;
this.itemSupplier = itemSupplier;
this.itemCost = itemCost;
this.dept = dept;
this.itemCode = nextCode++;

}

最新更新