2013-06-29 117 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>,其中使用字典的關鍵是房間的數量。

相關問題