2010-08-12 147 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()實現可能對數組的前兩個元素(它們被打印)正常工作,並可能爲數組中的第三個元素拋出異常。

這可能會導致錯誤描述:此循環將打印數組中的兩個值。它打印的值但在此之後,它顯示數組越界的異常