2013-06-29 2 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

해결책은 간단한 배열을 사용하는 것입니다. 이 경우 객실 수를 알고 있기 때문에 더 쉬울 수 있습니다. for 루프에 Room room=new Room(로 시작하는 줄 ... 변경 내부

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

그런 다음 :

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

를 루프 이 여기 않는, 0으로 시작하셔야합니다.

다른 해결책은 ArrayList를 사용하는 것입니다. 얼마나 많은 방을 추가할지 모르는 경우 다소 힘들지만 더 유연합니다.

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

그런 다음 루프에 추가 :

당신은 Collection으로 객실을 추가해야
rooms.add(room); 
1

가하는 List<Room> 수 또는 Map <Key,Value> 어디 자바에서 사전을 사용할 수있는 키 방의 수입니다.

관련 문제