我目前正在为更大的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();
}
}
这是在终端中运行:
答案 0 :(得分:2)
是的,这是真的。您只需将一个变量存储在不同房屋的价格中。
我建议做一些改变:
创建一个类House。它包含您可能需要的价格和其他信息。
创建Houses的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);
}
}
答案 1 :(得分:0)
首先,您需要创建应用程序的新设计。
例如,创建类House
:
public class House {
private int numberOfHouse;
private int housePrice;
}
之后阅读Arrays和Collections