如何初始化二维数组?

时间:2019-05-31 16:15:05

标签: java eclipse

我在初始化数组时遇到麻烦。当我尝试绘制数组时,我得到了NullPointerException

我需要访问从另一个类声明了数组的类,这就是其static的原因。

这是我的代码:

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 个答案:

答案 0 :(得分:2)

ArrayIndexOutOfBoundsException指出您正在尝试从中访问元素和不存在的索引,

在这一行:

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

您已指定要For循环进行无限循环,因为长度将始终小于4,因此您需要使column处于类似状态

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

因此,使其循环直到3,因为它将从0开始直到3。

为了清楚起见,还有1件事是第一行是列,第二是列,因此尽管它与naming-problem相关,但是您有3行和10列,但是您应该对此有所了解。

答案 1 :(得分:2)

这是2个问题。我无法回答第一个问题,因为您没有说异常发生在哪里,而且我也不知道“绘制”数组的意思。

第二,您的问题在这里(和类似的地方):

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

DayOfTheMonth.length将始终取值为3,因此column将不断增加。您可能想要的是

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

我没有断言这是否是唯一的问题。