0

我正在尝试在另一个名为 TextGame 的类中创建和使用一个名为 Room 的类的多个实例。TextGame 类有一个名为 numRooms 的实例变量,循环的布尔表达式在该实例变量处结束。我遇到的唯一问题是循环创建了一个与最后一个同名的对象。我不确定这是否会覆盖对象,从而导致循环结束时只有一个对象。

这是包含循环的方法:

public void makeRooms(){
    Scanner keyboard = new Scanner(System.in);
    for(int i = 0; i < numRooms; i++){
        System.out.println("What riddle do you want in Room " + (i+1) + "?");
        String riddle = keyboard.nextLine();
        System.out.println("What is the answer for that riddle?");
        String answer = keyboard.nextLine();
        Room room = new Room(riddle, answer);
    }
}

有没有一种方法可以在每次迭代时根据 i 的值来命名 Room 对象?

4

2 回答 2

1

一个解决方案是使用一个简单的数组。在这种情况下,这可能会更容易,因为您知道房间的数量。

Room[] roomArray=new Room[numRooms]; //This happens outside the for loop

然后在 for 循环中,将以 ... 开头的行更改Room room=new Room(为:

room[i]=new Room(riddle, answer);

请注意,您的循环必须从 0 开始,这里也是如此。

另一种解决方案是使用 ArrayList。如果您不知道要添加多少个房间,这有点困难,但更灵活。

ArrayList<Room> rooms=new ArrayList<>(); //The brackets refer to generics

然后,在你的 for 循环中,添加:

rooms.add(room);
于 2013-06-29T23:33:53.610 回答
1

您必须将房间添加到 aCollection中,可以是 a , List<Room>或者您可以在 java a 中使用 Dictionary a Map <Key,Value>,其中关键是房间数。

于 2013-06-29T23:34:04.947 回答