2017-01-07 7 views
0

私は二重配列を使用していますので、Tileの1つのタイルの近傍の8個の近傍を計算する必要があります。私はそれらを個別に知りたいので、Tileには、方向ごとにパラメータとしてTileを受け入れる8つのセッターメソッドが含まれています。最初に、特定のタイルの隣人を繰り返してArrayListに追加します。今はそれらの要素をセッターメソッドに渡したいが、それはTileではなく、List<Tile> なので、これを回避するにはどうしたらよいですか? setterメソッドを変更してListを期待しようとしましたが、何も変わりませんでした。あるいは私のアプローチ全体を再構築する必要があるかもしれませんか?このため私は間違いなく8人の隣人を持っているタイルを見ていましたが、一般的に一度これが働くと、隣人がいない縁でそれらを捕まえることを考える必要があります。Java - ArrayList内のオブジェクトの元の型にアクセスする

private void calculateNeighbors (int x, int y){ 
    System.out.print("The neighbors of " + getTile(x,y)); 

    List<Tile> neighbors = new ArrayList<>(); 

    int[] coordinates = new int[]{ 
      -1,-1, 
      -1, 0, 
      -1, 1, 
      0,-1, 
      0, 1, 
      1,-1, 
      1, 0, 
      1, 1 
    }; 

    for (int i = 0; i < coordinates.length; i++) { 
     int columnX = coordinates[i]; 
     int rowY = coordinates[++i]; 

     int nextX = x + columnX; 
     int nextY = y + rowY; 

     if (nextX >= 0 && nextX < getListOfTiles().length 
       && nextY >= 0 && nextY < getListOfTiles().length) { 
       neighbors.add(getTile(nextX, nextY)); 
     } 
    } 
    //this here isn't working 
    tile.setTopLeft(neighbors[0]); 
    tile.setTop(neighbors[1]); 
    //etc 
    } 
} 

答えて

1

あなたはそれらの指標に基づいてリスト内のオブジェクトにアクセスするには、リストのget(int)方法を使用する必要があります。

tile.setTopLeft(neighbors.get(0)); 
tile.setTop(neighbors.get(1)); 

添字演算子は、配列があるときです。

+0

ありがとう!構文は今大丈夫ですが、私はまだNULLポインタを得ています。どんな考え?私はリストを印刷すると空ではなく、8つの要素がありますが、あなたが私に示したようにそれらにアクセスしようとすると、そこには何もありません。 – dot

+0

あなたはヌルポインタを取得する場所にコードを貼り付けることができますか?あなたの質問に編集セクションを持って、そこにアクセスしようとしている場所にコードを貼り付け、NPEを入手してください。 –

+0

私の問題はまったく別のものだと思いますが、単なる手掛かりがあります – dot

関連する問題