这个问题一直困扰着我。我似乎无法更新我销售的车辆的股票价值。我了解如何搜索阵列并找到用户正在寻找的模型,但我不了解如何更新库存中特定模型车辆的数量。这将是购买后的库存 -
我在Vehicle超类中有模型和库存变量的基本getter和setter
感谢任何帮助!
以下是从驾驶员类购买汽车的方法
public void purchaseCar()
{
Scanner scan = new Scanner(System.in);
String model, ans;
System.out.println("****Car Purchase Page****");
System.out.println("Enter the model of car you're looking to purchase");
model = scan.nextLine();
for (Vehicles v : list) {
if (v.getmodel().equals(model))
{
System.out.println("Is this the model you want to purchase?");
ans = scan.nextLine();
if (ans.equals("yes")) {
System.out.println("Okay! Your order is being processed");
Vehicles.setStock() = stock - 1;
}
else {
System.out.println("not working");
}
}
}
}
答案 0 :(得分:2)
你快到了。
变化:
Vehicles.setStock() = stock - 1;
为:
v.setStock(v.getStock() - 1);
作为澄清,这与:
相同int stock = v.getStock(); // Get the current stock value of 'v'
int newStock = stock - 1; // The new stock value after the purchase
v.setStock(newStock); // Set the new stock value
答案 1 :(得分:0)
您没有在要更新的对象上调用Vehicles.setStock()
。此外,此方法不会接收任何参数来更新新库存。
您应该在要更新的实例上调用该方法,并将其传递给股票的新值。
试试这个
v.setStock(v.getStock() - 1);
如果使用v.getStock()
来构建参数似乎很奇怪,您可以在车辆类中创建一个新方法。
class Vehicles{
int stock;
public void consumeOne(){
stock = stock -1;
}
}
然后你可以在for语句中调用这个新方法
for (Vehicles v : list) {
if (v.getmodel().equals(model)){
ans = scan.nextLine();
if (ans.equals("yes")) {
v.consumeOne();
}else {
System.out.println("not working");
}
}
}