2016-03-06 2 views
-2

В настоящее время я работаю над методом setHousePrice() для более крупного проекта ООП. Однако программа не ведет себя так, как я ожидал. Все значения хранятся в переменной housePrice, но мне кажется, что каждый раз, когда новое значение сохраняется, оно переопределяет предыдущее значение.Сохранение нескольких значений в переменной (без использования коллекций или массивов)

Мой вопрос в том, как изменить код для хранения нескольких цен на жилье в одну переменную (если возможно)? Есть ли способ сделать это без использования массивов или коллекций?

Вот код класса:

import java.util.Scanner; 

public class BuyAHouseInc2 
{ 
private int houseCounter; 
private int amountOfHouses; 
private int housePrice; 

// method that sets the house price 
    public void setHousePrice() 
    { 
     System.out.println("\n--------------------"); 
     System.out.println("Set House Prices"); 
     System.out.println("--------------------"); 

     houseCounter = 1; 
     do 
     { 
      System.out.print("\nPlease enter the price of house " + houseCounter + ": " + "€"); 
      Scanner input = new Scanner(System.in); 
      housePrice = input.nextInt(); 

       if(housePrice > 0) 
       { 
        this.housePrice = housePrice; 
        houseCounter++; 
       } 
       else 
       { 
        System.out.println("Enter a valid house price..."); 
       } 

     } 
     while(houseCounter <= amountOfHouses); 
    } 
} 

Это код тестер:

public class BuyAHouseIncTester2 
{ 
    public static void main(String args[]) 
    { 
    // client 1 details 
    BuyAHouseInc2 client1 = new BuyAHouseInc2 ("John","Doyle","15 Newton Drive\nDublin 5\n", 550000) 

    // set house price for each of the houses added to database 
    client1.setHousePrice(); 
    } 
} 

Это он работает в терминале:

enter image description here

+1

Где, если заявление? Оставьте только соответствующий код. –

+0

Конечно, это переопределяет предыдущее значение. Почему вы используете '<=' в своей работе? –

+0

@ YassinHajaj Im использует <= оператор, чтобы позволить пользователю продолжать вводить цены на жилье, пока все дома в базе данных не получили значение. т. е. в предыдущей части программного кода (который я исключил из-за того, что он не имеет отношения к моему вопросу), он спрашивает, сколько домов продается. Пользователь вводит x количество домов. В моем примере я добавил 2 дома. Тем не менее, моя проблема - это самая последняя ценность housePrice переопределяет введенное ранее значение. Вот где я, нахожу это немного сложнее. – Konahrik16

ответ

0

Прежде всего вы необходимо создать новый дизайн вашего приложения.

Например, создать класс House:

public class House { 
    private int numberOfHouse; 
    private int housePrice; 
} 

И после того, что читать о Arrays и Collections

+0

Im знает о массивах и о том, как их использовать, но я специально избегаю их здесь специально. Я ценю помощь, спасибо. – Konahrik16

2

Да, это правда. Вы храните цены на разные дома только одной переменной.

Я хотел бы предложить несколько изменений:

  1. Создать класс дома. Он содержит цену и другую информацию, которую вы можете захотеть.

  2. Создать ArrayList домов. В этом случае размер ArrayList - это количество домов, и вы получаете каждый дом, пройдя его.

Давайте поговорим о коде:

public class House 
{ 
    int housePrice = 0; 

    void setPrice(int price) 
    { 
     housePrice = price; //You've checked before 
    } 
} 

И:

import java.util.Scanner; 

public class BuyAHouseInc2 
{ 
    private int amountOfHouses; 
    private ArrayList<House> houses; 

    public BuyAHouseInc2(int amountOfHouses) 
    { 
     this.amountOfHouses = amountOfHouses; 
     houses = new ArrayList<>(amountOfHouses); 
    } 

    // method that sets the house price 
     public void setHousePrice() 
     { 
      System.out.println("\n--------------------"); 
      System.out.println("Set House Prices"); 
      System.out.println("--------------------"); 

      int houseCounter = 0; 
      do 
      { 
       System.out.print("\nPlease enter the price of house " + houseCounter + ": " + "€"); 
       Scanner input = new Scanner(System.in); 
       int housePrice = input.nextInt(); 

        if(housePrice > 0) 
        { 
         House h = new House(); 
         h.setPrice(housePrice); 
         houses.add(h); 
         houseCounter++; 
        } 
        else 
        { 
         System.out.println("Enter a valid house price..."); 
        } 

      } 
      while(houseCounter < amountOfHouses); 
     } 
} 
+0

Я попробую. Спасибо. – Konahrik16

+1

Я загрузил свою программу. Вы можете получить доступ к классу и тестеру из следующих ссылок. [код класса] (http://pastie.org/private/pioep2xrrydfsxmwipwtfg) [тестер код] (http://pastie.org/private/a6okdo0az2ugidvevhjplw) бы иметь возможность написать свой массив здесь, потому что Я получал компиляцию ошибок при тестировании вашего кода выше. Спасибо. – Konahrik16

Смежные вопросы