だから私はいくつかの地図の経路探索を行っていますが、エラーが発生し続けます
java.lang.StringIndexOutOfBoundsException: String index out of range: 1
しかし、それがどのように範囲外になるかはわかりません。マップは 10,10 であるため、x&y 配列部分は 0 ~ 9 になります。
これは私のコードです
public boolean[][] passable;
public int[][] passCost;
String[][] twoDMap = {
{ ".", ".", ".", ".", ".", "X", ".", ".", ".", "." },// ROW0
{ ".", "X", "X", "X", ".", "X", "X", "X", ".", "." },// ROW1
{ ".", "X", ".", "X", ".", "X", ".", "X", "X", "X" },// ROW2
{ ".", ".", ".", ".", ".", ".", "X", ".", "X", "." },// ROW3
{ ".", "X", "X", "X", "X", "X", "X", "X", ".", "X" },// ROW4
{ ".", ".", ".", ".", ".", ".", ".", ".", "X", "X" },// ROW5
{ "X", "X", ".", ".", ".", ".", "X", "X", ".", "." },// RO6
{ ".", ".", ".", ".", "X", "X", "X", ".", ".", "." },// RO7
{ ".", "X", "X", "X", "X", ".", ".", ".", ".", "." },// ROW8
{ ".", ".", ".", ".", ".", ".", "X", ".", ".", "." } };// ROW9
private void createMap() {
passable = new boolean[twoDMap.length][twoDMap[0].length];
passCost = new int[passable.length][passable[0].length];
System.out.println(twoDMap.length);
System.out.println(twoDMap[0].length);
for (int x = 0; x < passable.length; x++) {
for (int y = 0; y < passable[x].length; y++) {
passCost[x][y] = 1;
System.out.print(twoDMap[x][y]);
passable[x][y] = twoDMap[y][x].charAt(x) == 'X' ? false
: true;
}
System.out.println();
}
}
マップの最初の行、選択されたセクションに「X」が含まれているかどうかをチェックする部分に到達すると、エラーが表示されます。そうであれば、問題が発生します。