java二維數(shù)組動態(tài)賦值 聲明二維數(shù)組并賦值時每行的列數(shù)可以不一樣么?
聲明二維數(shù)組并賦值時每行的列數(shù)可以不一樣么?這是因?yàn)槊總€數(shù)組元素的存儲距離都很近,而C/C等高級語言采用的是“行優(yōu)先存儲”的方法,即先將元素存儲在同一行上,然后在行結(jié)束后再存儲下一行。因此,一行中的幾
聲明二維數(shù)組并賦值時每行的列數(shù)可以不一樣么?
這是因?yàn)槊總€數(shù)組元素的存儲距離都很近,而C/C等高級語言采用的是“行優(yōu)先存儲”的方法,即先將元素存儲在同一行上,然后在行結(jié)束后再存儲下一行。因此,一行中的幾個元素不能省略。在定義二維數(shù)組時,我們必須首先明確一行中有幾個元素。如果是三維數(shù)組,則必須同時指定行數(shù)和列數(shù)。只有“頁數(shù)”可以省略。
為什么java這樣給二維數(shù)組賦值不行?
這表示數(shù)組的長度為4,最大下標(biāo)為3。但是,代碼在操作期間訪問下標(biāo)為4的區(qū)域,導(dǎo)致越界。創(chuàng)建數(shù)組的代碼是
int array[
=new int[n-1][n-1
]根據(jù)調(diào)試信息,我們可以看到n=5,即我們創(chuàng)建了一個4x4二維數(shù)組,第一個是數(shù)組[0][0],最后一個是數(shù)組[3][3]。在斷點(diǎn)的那一行,我們可以看到n-1=4,b1=3,也就是說,我們訪問了數(shù)組[4][3],這顯然是越界的。我們可以根據(jù)自己的需要嘗試擴(kuò)展數(shù)組或修改其他邏輯來糾正錯誤