java.lang.reflect.InvocationTargetException при использовании циклов - PullRequest
0 голосов
/ 18 июня 2019

Я получаю ошибку 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();
    }
}

1 Ответ

1 голос
/ 18 июня 2019

Ваша ошибка крошечная

просто измените эту строку

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

Надеюсь, это работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...