Не могу загрузить двумерный массив - PullRequest
0 голосов
/ 25 октября 2019

Кажется, что первый цикл for выполняется только один раз, а второй (внутренний) для цикла работает нормально. Я пробовал все типы петель, которые я знаю, но всегда получал один и тот же результат. У меня обычно нет таких проблем с циклами, поэтому мне любопытно, в чем проблема.

    public class xirtam {

        public static void main(String[] args) {

            try {

                int max_columns = 10;
                int max_characters_in_a_column = 30, sign;
                int array[][] = new int[max_columns][max_characters_in_a_column];


                for(int y=0;y<=max_columns;y++) {  

> // This loop seems to be executed just 1 time


                    for (int x=0 ; x<=max_characters_in_a_column ; x++) {  

> //This loop works fine for some reason


                        sign = (int) (Math.random() * ((256 - 0) + 1));

                        array[y][x] = sign;

                        System.out.println("column " + y + " character " + x + ":"+ array[y][x]); // prints out the "column" and "character" where the loop is currently working

                        //Thread.sleep(100);
                    }

                }

            } catch (Exception e) {
            }

        }
    }

1 Ответ

3 голосов
/ 25 октября 2019

Вы получили Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 30 out of bounds for length 30 на array[y][x] = sign;. Поэтому.

В вашем втором цикле используйте x<max_characters_in_a_column, а не <=. Это решит вашу проблему. И то же самое для первого цикла.

Максимальное индексирование для вашего массива будет array[9][29], так как вы определили размеры как 10 и 30.

...