0

グリッド4列×5行の形でマップを作成し、各部屋を接続しようとしています。以下のコードはコンパイルされますが、実行しようとするとエラーが発生します。どこがうまくいかなかったのか教えてもらえますか?ありがとう。

  public static final int NUM_ROOMS = 20; 

  public static final int NUM_COLS = 4; 

  private ArrayList<Room> myRooms;

  public Map(){

     int row =0;
     ArrayList<Room> myRooms = new ArrayList<Room>();
     while (row<NUM_COLS){
        int i =0;
        i = row % NUM_COLS;
        while(i+1<NUM_COLS){
           while (i+1 <(row+1)% NUM_COLS){
              Room r1 = myRooms.get(i);
              Room r2 = myRooms.get(i+1);
              r1.connectTo(r2);
              r2.connectTo(r1);
              i++;
           }
           row++;
        }

        int col = 0;

        while (col<NUM_COLS){
           i = col; 
           while (i+4<NUM_ROOMS){
             i = i+NUM_COLS; 
            }
            col++;
        }

     }

 }
4

1 に答える 1

1

問題は、myRoomsリストが空であるということです。したがって、リストから要素を取得しようとすると、例外が発生します。あなたは次のようなものを使用する必要があります

for (int i = 0; i < NUM_ROOMS; i++) {
    myRooms.add(new Room());
}

最初にリストに入力します。

于 2012-10-11T13:07:23.323 に答える