我在初始化数组时遇到麻烦。当我尝试绘制数组时,我得到了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
答案 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++)
我没有断言这是否是唯一的问题。