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
}
}
ありがとう!構文は今大丈夫ですが、私はまだNULLポインタを得ています。どんな考え?私はリストを印刷すると空ではなく、8つの要素がありますが、あなたが私に示したようにそれらにアクセスしようとすると、そこには何もありません。 – dot
あなたはヌルポインタを取得する場所にコードを貼り付けることができますか?あなたの質問に編集セクションを持って、そこにアクセスしようとしている場所にコードを貼り付け、NPEを入手してください。 –
私の問題はまったく別のものだと思いますが、単なる手掛かりがあります – dot