更新arraylist中对象的值

时间:2016-05-02 14:58:43

标签: java arraylist

这个问题一直困扰着我。我似乎无法更新我销售的车辆的股票价值。我了解如何搜索阵列并找到用户正在寻找的模型,但我不了解如何更新库存中特定模型车辆的数量。这将是购买后的库存 -

我在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");

                }
            }
        }
    }

2 个答案:

答案 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");
        }
    }
}