2016-03-06 208 views
-2

我目前正在將setHousePrice()方法應用於較大的OOP項目。但是,該程序沒有按照我的預期行事。所有的值都存儲在變量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

哪裏if語句?只留下適當的代碼。 –

+0

當然,它會覆蓋以前的值。你爲什麼在你的程序中使用'<='? –

+0

@YassinHajaj我使用<=運算符來允許用戶繼續輸入房價,直到數據庫中的所有房屋都被賦予價值。即在程序代碼的前一部分(我排除它是因爲它與我的問題的一部分不相關),它詢問有多少房屋待售。用戶輸入x個房屋。在我的例子中,我添加了2個房屋。但是,我的問題是housePrice的最新值會覆蓋以前輸入的值。這是我的位置,發現它有點棘手。 – Konahrik16

回答

0

首先你需要創建應用程序的新設計。

例如,創建House類:

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

而在這之後閱讀ArraysCollections

+0

我知道數組以及如何使用它們,但我特意避開它們。我很感激幫助,謝謝。 – 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

相關問題