2016-05-02 16 views
0

この問題は、最後の間私を悩ませています..私は販売している車両の在庫値を更新することができないようです。私は配列を検索し、ユーザーが探しているモデルを見つける方法を理解していますが、在庫がある特定のモデル車両の番号を更新する方法を理解していません。購入後に在庫が1になる予定です。arraylistのオブジェクトの値を更新する

私は任意のヘルプは感謝です

車スーパークラスでモデルと在庫の変数のための基本的な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

投稿してくださいあなたの車クラス、または少なくともその変数とsetStock方法のために、この新しいメソッドを呼び出すことができます。 – Zircon

+0

もし私が何かを見逃していなければ、メソッドに値を代入しようとしているときにこのコードをコンパイルすべきではありません。 –

答えて

2

から車を購入する方法です。

変更:

Vehicles.setStock() = stock - 1; 

へ:あなたがオブジェクトにVehicles.setStock()を起動していない

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 
+0

私はパラメータとしてgetStockを使用するロジックを理解していませんが、うまくいきましたか? – Dylan

+0

@Dylan '' 'methodname()' '' ''() '' 'メソッドが呼び出されているときはいつでも。メソッド自体を引数として渡すのではなく、それが返す値です。 –

+0

パーフェクト、ありがとうJorn Vernee – Dylan

0

明確化として
v.setStock(v.getStock() - 1); 

、これは同じですあなたは更新したい。さらに、このメソッドは新しい在庫を更新するためのパラメータを受け取りません。

更新するインスタンスのメソッドを呼び出すと、新しい値が渡されます。

あなたがあなたの車のクラス内で新しいメソッドを作成することができ、パラメータを構築するためにv.getStock()を使用するために、あなたには奇妙に思われる場合は、この

v.setStock(v.getStock() - 1); 

を試してみてください。

class Vehicles{ 
    int stock; 

    public void consumeOne(){ 
     stock = stock -1; 
    } 
} 

そして、あなたは声明

for (Vehicles v : list) { 
    if (v.getmodel().equals(model)){ 
     ans = scan.nextLine(); 
     if (ans.equals("yes")) { 
      v.consumeOne(); 
     }else { 
      System.out.println("not working"); 
     } 
    } 
} 
関連する問題