b [i] =新按钮(月[i]);我可以像这样将变量传递给java中的Button构造函数,

时间:2014-01-04 13:22:23

标签: java indexoutofboundsexception

我正在尝试在java中设置Buttons的标签,并且我已将Button类的数组声明为Button b[12],并将String数组声明为String months[12]

String数组由12个字符串组成,其名称为月份,我正在尝试通过以下代码设置每个按钮的标签:

b[i] = new Button(months[i]);

虽然,我在这里得到ArrayIndexOutOfBound例外......

解决方案是什么?

1 个答案:

答案 0 :(得分:3)

ArrayIndexOutOfBound异常表示您尝试访问的内存比先前声明的更多。我很确定您的代码如下所示:

for (int i = 1 /* or 0 maybe? doesn't matter... */; i <= 12; i++) {
    b[i] = new Button(months[i]);
}

实际上,它无法工作,因为你试图在13日访问内存。我们将元素从0开始索引,所以月份[12]实际上是第13个元素,你没有为它分配内存。

正确的代码:

for (int i = 0; i < b.length; ++i) {
    b[i] = new Button(months[i]);
}

只要months数组与b数组的长度相同或更长,它就会“正常”工作。

无论如何:请发布您的完整代码,我会稍微编辑一下我的答案。