0

TextGame という別のクラスで Room というクラスのインスタンスをいくつか作成して使用しようとしています。TextGame クラスには numRooms というインスタンス変数があり、ループのブール式はそのインスタンス変数で終了します。私が抱えている唯一の問題は、ループが最後のオブジェクトと同じ名前のオブジェクトを作成することです。それがオブジェクトをオーバーライドして、ループの最後にオブジェクトが1つだけになるかどうかはわかりません。

ループを含むメソッドは次のとおりです。

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

Room room=new Room(次に、for ループ内で、 ... で始まる行を次のように変更します。

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

部屋を に追加する必要があります。または、キーが部屋の数であるjava a でディクショナリを使用できますCollectionList<Room>Map <Key,Value>

于 2013-06-29T23:34:04.947 に答える