2010-08-12 176 views
0
for(int m=0; m< checkBoxValue.length ; m++) 
{ 
    System.out.println("check box in model class"+checkBoxValue[m]+"\n"); 

} 

此循环用于打印数组中的两个值。它打印值但在此之后,它显示数组越界的异常Java Array概念

+0

你怎么声明'checkBoxValue'? – Gopi 2010-08-12 05:15:04

+0

该代码片段应该在没有任何异常的情况下工作,假定数组在使用前使用值初始化。 – jerjer 2010-08-12 05:21:41

+0

@Moron:你的编辑有什么好处? – chiccodoro 2010-08-12 06:30:18

回答

1

你确定在这里引发异常吗?

+2

包含的代码没有问题。他的例外必须在其他地方发生。 – Gunslinger47 2010-08-12 05:18:27

+0

@Gun:_Her_。 Kalpana是一个女孩的名字。但是谁知道:-) – 2010-08-12 06:50:07

2

看来你在错误的轨道上。最好在for循环中设置一个突破点并调试代码,然后逐步完成。这将显示在抛出异常......

特别是因为你说“那后”,你可能想的是 for循环之后为您检查代码:-)

0

的代码应该工作罚款提供你已经做好阵列初始化。

+0

即使'不正确的'初始化也会导致这种错误。OP说,数组中的两个值被打印出来,所以数组被构造并且包含(至少)两个元素。 – 2010-08-12 07:00:05

1

哦..看起来像一团糟。信息看起来非常抽象。你需要具体,可能你可以在这里给更多的代码。我想到的一个可能的原因可能是多线程。

只有多线程应用程序可以做到这一点。如果是这样,你最好提供同步checkBoxValue变量的原始对象。

希望有帮助....

+0

+1它可以抛出异常,当你使用不同的线程 – 2010-08-12 07:00:55

+1

我不明白多线程可能会导致这种异常。在显示的代码中,我们有一个对数组的引用。任何其他线程都不可能修改该数组的长度。如果数据类型是List,那么我可以看到在另一个线程同时删除列表中的项目的情况下,列表的大小是如何变化的。但是数组的长度不能改变。请解释多线程如何引发异常。 – Alderath 2010-08-12 07:11:02

+0

-1,我支持Alderath的评论。 – chiccodoro 2010-08-12 07:34:39

0

发布的代码不应该抛出ArrayIndexOutOfBoundsException。最有可能的,你正在做之后的循环访问数组的不正确索引。

问题中显示的代码可能抛出ArrayIndexOutOfBoundsException的唯一方法是如果其中一个checkBoxValue [m]对象的toString()方法抛出异常。

0

也许你已经重写了checkBoxValue-class的toString()方法(数组初始值设定项有助于识别这个类)。遵循这个理论,toString()实现可能对数组的前两个元素(它们被打印)正常工作,并可能为数组中的第三个元素抛出异常。

这可能会导致错误描述:此循环将打印数组中的两个值。它打印的值但在此之后,它显示数组越界的异常