1

爲什麼這會導致數組越界異常?爲什麼這是一個數組越界異常?

x[10][2] = 5; 

如果是這種分配第11陣列的第三點,5

我在矩形方式認爲它的價值。 它像我們要計數11行(代表10個陣列) 然後我們必須去到第三列,它是在2

OR

我應該看它作爲一個陣列尋找大小爲2的數組中的第11個點實際上不存在?

+2

我們認爲行和列是有點主觀的。你是如何定義數組的?如果它是「int x [12] [4];」這當然應該起作用。 「int x [4] [12];」例如不會因爲第一個索引(10)超過數組(3)的末尾。 –

+0

好的完美標記我得到了我需要的答案。 格雷格如果我使用的是java – Ralph

+0

@ user1804697作爲一個方面說明,Java在將二維數組存儲在內存中時使用行優先順序,這會影響您周圍的哪個方向出於效率原因應該對待它們。請參閱http://en.wikipedia.org/wiki/Row-major_order – jazzbassrob

回答

0

爲什麼這會導致數組越界異常?

x[10][2] = 5; 

只有當您嘗試訪問位置超出您爲陣列定義的範圍時纔會發生這種情況。例如

int x[20][20]; 

您可以使x [10] [2] = 5;沒有問題,因爲10 < 20和2 < 20.但是,如果你做的事:

x[30][20] = 5; 

你將不得不越界異常,因爲您嘗試訪問二維數組的位置(30,20),位置超過2D陣列的大小。

0

x數組的第11個元素嗎?如果是,它的長度是多少?
您收到的錯誤,因爲它很可能是元素的長度小於3
測試它試圖

 

    System.out.printf(x[10].length); 
 

希望有所幫助。