为了账号安全,请及时绑定邮箱和手机立即绑定

如何初始化一个二维数组?

如何初始化一个二维数组?

慕娘9325324 2022-12-28 15:41:09
我在初始化数组时遇到问题。当我尝试绘制数组时,我得到了一个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++)

你已经指定去ForLoop 去无限,因为长度总是小于 4 所以你需要有column像这样的条件

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

所以让它循环直到 3,因为它将从 0 开始并上升到 3。

为了清楚起见,还有一件事是第一件事是行,第二件事是列,所以你有 3 行和 10 列,虽然它只是相关naming-problem但你应该清楚它。


查看完整回答
反对 回复 2022-12-28
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

这是2个问题。我无法回答第一个,因为您没有说明异常发生的位置,而且我不知道您所说的“绘制”数组是什么意思。

其次,您的问题在这里(以及类似的地方):

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

DayOfTheMonth.length将始终评估为 3,因此column将继续增加。你可能想要的是

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

关于这是否是唯一的问题,我不作任何声明。


查看完整回答
反对 回复 2022-12-28
  • 2 回答
  • 0 关注
  • 113 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号