通过循环创建具有相同名称的多个对象

时间:2013-06-29 23:30:41

标签: java loops object

我正在尝试在名为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对象?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

您必须将您的房间添加到Collection,可以是List<Room>,或者您可以在java Map <Key,Value>中使用字典,其中密钥是房间数。