将多个值存储到变量中(不使用集合或数组)

时间:2016-03-06 14:24:16

标签: java oop if-statement

我目前正在为更大的OOP项目开发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

2 个答案:

答案 0 :(得分:2)

是的,这是真的。您只需将一个变量存储在不同房屋的价格中。

我建议做一些改变:

  1. 创建一个类House。它包含您可能需要的价格和其他信息。

  2. 创建Houses的ArrayList。在这种情况下,ArrayList的大小是房屋的数量,你可以通过遍历它来获得每个房屋。

  3. 让我们谈谈代码:

    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);
            }
    }
    

答案 1 :(得分:0)

首先,您需要创建应用程序的新设计。

例如,创建类House

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

之后阅读ArraysCollections