我在初始化數組時遇到問題。當我嘗試繪制數組時,我得到了一個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
提交
取消