0

我正在制作几个简单的类来计算垄断游戏中的一些东西。

我的第一堂课(BoardSquare)有方法来获取和设置playerid squarename 和广场上的房屋数量,而我还有另一种方法,根据带有if 语句的广场上有多少房子来计算租金。

我的第二个类(House)有一个方法可以在另一个 if 语句中获取新房子的成本,然后有一个 set 方法来设置房价。

我的目标是在 boardsquare 类中使用 House 类。我的意思是,而不是有一个实例变量

    int houses;

为了保存正方形上的房屋数量,我使用了 House 类型的变量。换句话说,不是在一个正方形上有许多房子,而是有 0 或 1 个房子。

我知道我想做什么我只是不知道该怎么做。

所以我有一个实例变量Househouses;我的 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
    }

希望您能理解我要完成的工作。如果您能提供任何提示,我将不胜感激。

4

2 回答 2

1

在 BoardSquare 类中添加一个实例变量,如下所示:

LinkedList<House> houses;

如果只能有 0 或 1 个房屋,则可以有一个 House 类型的实例变量和一个名为 hasHouses 的布尔类型的实例变量。

于 2013-11-05T20:28:08.777 回答
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. 有关更多信息,请参阅文档。

于 2013-11-05T20:32:44.323 回答