Как инициализировать двумерный массив? - PullRequest
1 голос
/ 31 мая 2019

У меня проблемы с инициализацией массива.Когда я пытаюсь нарисовать массив, я получаю NullPointerException.

. Мне нужен доступ к классу, в котором я объявил массив из другого класса, поэтому он static.

*.1006 * Вот мой код:
static int[][] DayOfTheMonth = new int[3][10];


public static void ArrayValue() {
    for (int column = 0; DayOfTheMonth.length < 4; column++) {
        for (int row = 10; DayOfTheMonth[column].length < 10; row++) {
            if (DaysofTheMonth <= Tag.MaximumDaysOfAMonth()) {

                DayOfTheMonth.[column][row] = Date.getDate() + DaysofTheMonth;
                DaysofTheMonth++;

            } else if (DaysofTheMonth > Tag.MaxDay()) {
                DaysofTheMonth = 1;

                if (Month != 12)
                    Month++;
                else {
                    Month = 0;
                    Year++;

                }
            }
        }
    }
}

Другая проблема состоит в том, что, когда я пытаюсь получить доступ к методу через мой основной класс, он говорит:

Exception in thread "Main" java.lang.ArrayIndexOutOfBoundsException: 3

Ответы [ 2 ]

2 голосов
/ 31 мая 2019

Это 2 вопроса. Я не могу ответить на первый вопрос, потому что вы не говорите, где происходит исключение, и я не знаю, что вы подразумеваете под «нарисовать» массив.

Во-вторых, ваша проблема здесь (и в подобных местах):

for (int column = 0; DayOfTheMonth.length < 4; column++) 

DayOfTheMonth.length всегда будет иметь значение 3, поэтому column будет увеличиваться. То, что вы, вероятно, хотите, это

for (int column = 0; column < DayOfTheMonth.length; column++) 

Я не утверждаю, является ли это единственной проблемой.

2 голосов
/ 31 мая 2019

ArrayIndexOutOfBoundsException указывает, что вы пытаетесь получить доступ к элементу и индексу, который не существует,

В этой строке:

for (int column = 0;  DayOfTheMonth.length < 4; column++)

Вы указали пойти на For Цикл, чтобы идти бесконечно, потому что длина всегда будет меньше 4, поэтому вам нужно иметь column в состоянии, подобном

for (int column = 0;  column < DayOfTheMonth.length; column++)

Так что сделайте цикл до 3, так как он будет начинаться с 0 и подниматься до 3.

И еще одна вещь для вашей ясности: 1-я вещь - это строка, а вторая - это столбец, так что у вас есть 3 строки и 10 столбцов, хотя это просто связано с naming-problem, но вы должны прояснить это.

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