2016-05-02 3 views
0

Эта проблема прослушивала меня в течение последнего времени. Я не могу обновить стоимость акций транспортного средства, которое я продаю. Я понимаю, как искать массив и находить модель, которую ищет пользователь, но я не понимаю, как обновить количество этого конкретного модельного автомобиля, которое есть на складе. который будет запасом - 1 после покупки.Обновление значения объекта в arraylist

У меня есть и основные методы получения и установки для модели и переменных запасов в суперкласса автомобиль

Любая помощь ценим!

Ниже приведен способ приобретения автомобиля из класса драйвера

 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; 

к:

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

Спасибо, что сработал, хотя я не понимаю логику использования getStock в качестве параметра? – Dylan

+0

@Dylan Всякий раз, когда вы видите '' 'methodname()' '' с '' '()' '' метод вызывается. Вы не передаете этот метод как аргумент, а скорее значение, которое оно возвращает. –

+0

Отлично, спасибо Йорну Верни – Dylan

0

Вы не ссылающегося на Vehicles.setStock() на объекте вы хотите обновить. И, кроме того, этот метод не получает никаких параметров для обновления нового запаса.

Вы должны вызвать метод в экземпляре, который хотите обновить, передав ему новое значение запаса.

Попробуйте

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

Если это кажется вам странным использовать v.getStock() для создания параметра вы можете создать новый метод в классе транспортного средства.

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"); 
     } 
    } 
} 
Смежные вопросы