我在初始化数组时遇到问题。当我尝试绘制数组时,我得到了一个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 回答

翻阅古今
TA贡献1780条经验 获得超5个赞
ArrayIndexOutOfBoundsException
声明您正在尝试访问不存在的元素和索引,因此,
在这一行中:
for (int column = 0; DayOfTheMonth.length < 4; column++)
你已经指定去For
Loop 去无限,因为长度总是小于 4 所以你需要有column
像这样的条件
for (int column = 0; column < DayOfTheMonth.length; column++)
所以让它循环直到 3,因为它将从 0 开始并上升到 3。
为了清楚起见,还有一件事是第一件事是行,第二件事是列,所以你有 3 行和 10 列,虽然它只是相关naming-problem
但你应该清楚它。

尚方宝剑之说
TA贡献1788条经验 获得超4个赞
这是2个问题。我无法回答第一个,因为您没有说明异常发生的位置,而且我不知道您所说的“绘制”数组是什么意思。
其次,您的问题在这里(以及类似的地方):
for (int column = 0; DayOfTheMonth.length < 4; column++)
DayOfTheMonth.length
将始终评估为 3,因此column
将继续增加。你可能想要的是
for (int column = 0; column < DayOfTheMonth.length; column++)
关于这是否是唯一的问题,我不作任何声明。
添加回答
举报
0/150
提交
取消