2013-06-29 77 views
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客房对象?

+1

我想你要找的是一个'房间'的数组 –

回答

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

你有你的房间添加到Collection,可能是一个List<Room>或者你可以在Java Map <Key,Value>,其中使用字典的关键是房间的数量。

相关问题