我正在制作一些简单的课程来计算垄断游戏中的一些东西。
我的第一堂课(BoardSquare)有方法来获取和设置广场上的玩家广场名称和房屋数量,而我有另一种方法根据广场上有多少房屋用if语句计算租金。
我的第二堂课(House)有一个方法,可以在另一个if语句中获得该房产的新房成本,然后设置一套方法来设定房价。
我的目标是在boardsquare类中使用House类。我的意思是代替实例变量
int houses;
要保持广场上的房屋数量我使用House类型的变量。换句话说,不是在广场上有许多房屋,而是拥有0或1个房屋。
我知道我想做什么我只是不知道该怎么做。
所以我有一个实例变量 房屋; 我的getHouses方法读取
public House getHouses(this is where i had int h(from the constructor) but I dont know what to put here now)
{
Whatever I need to put here to access the class House
}
希望你能理解我想要完成的事情。我将非常感谢您提供的任何提示。
答案 0 :(得分:1)
在BoardSquare类中添加一个实例变量,如下所示:
LinkedList<House> houses;
如果只有0或1个房子,你可以有一个类型为House的实例变量,以及一个类型为boolean的实例变量,名为hasHouses。
答案 1 :(得分:1)
您需要Collection<House>
。
除非您需要链接列表的特定行为,否则请勿使用LinkedList<House>
。这也适用于ArrayList
。您可能希望将其中任何一个作为实现,但可以使用最抽象的集合。
List
是房屋的顺序很重要Set
如果您只想强制执行每种类型的房屋(可能不适用)所以:
Collection<House> houses = new ArrayList<House>();
public Collection<House> getHouses() {
return houses;
}
public void addHouse(House newHouse) {
houses.add(newHouse);
}
我选择了ArrayList
实现,因为将新元素添加到列表末尾是有效的。 LinkedList
也是如此,但LinkedList
增加了额外的开销,使得将条目插入List
变得高效。有关详细信息,请参阅文档。