我遇到错误java.lang.reflect.InvocationTargetException
每当我使用循环时,如果我只是创建一个矩形并将其分配给数组,它将起作用,但是如果我尝试在循环中对其进行分配,则会弹出该矩形。我试图对其进行搜索,但是大多数答案都围绕着FXML文件,但是我没有。需要吗?如果我添加一个错误,错误会消失吗?
public class ChessBoard extends Application {
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
ChessBoard(primaryStage);
}
public void ChessBoard(Stage primaryStage) {
primaryStage.setTitle("");
Group root = new Group();
Scene scene = new Scene(root, 520, 520, Color.WHITE);
Rectangle [][]tiles = new Rectangle[4][4];
for(int i = 0; i < tiles.length; i++) {
for(int j = 0; j < tiles[i].length; i++) {
tiles[i][j] = new Rectangle();
}
primaryStage.setScene(scene);
primaryStage.show();
}
}
答案 0 :(得分:1)
您的错误很小
只需更改此行
for(int j = 0; j < tiles[i].length; i++) {
对此
for(int j = 0; j < tiles[i].length; j++) {
问题出在内部循环中,您增加了计数器变量(i),而不是内部循环计数器变量(j),这会导致整数 (i)超出数组的长度,导致 java.lang.ArrayIndexOutOfBoundsException:4
希望这行得通