java怎么給二維數(shù)組賦值 為什么java這樣給二維數(shù)組賦值不行?
為什么java這樣給二維數(shù)組賦值不行?數(shù)組[[int]=4的下標(biāo)是在代碼操作中創(chuàng)建的,但數(shù)組的最大長(zhǎng)度是4int[n-1][n-1]根據(jù)調(diào)試信息,我們可以看到n=5,即我們創(chuàng)建了一個(gè)4x4二維數(shù)組,第
為什么java這樣給二維數(shù)組賦值不行?
數(shù)組[[int]=4的下標(biāo)是在代碼操作中創(chuàng)建的,但數(shù)組的最大長(zhǎng)度是4
int[n-1][n-1
]根據(jù)調(diào)試信息,我們可以看到n=5,即我們創(chuàng)建了一個(gè)4x4二維數(shù)組,第一個(gè)是數(shù)組[0][0],最后一個(gè)是數(shù)組[3][3]。在斷點(diǎn)的直線上,我們可以看到n-1=4,b1=3,也就是說(shuō),數(shù)組[4][3]被訪問(wèn),這顯然是越界的。您可以嘗試擴(kuò)展數(shù)組或根據(jù)自己的要求修改其他邏輯來(lái)更正錯(cuò)誤。
怎么把二維數(shù)組的值賦給一維數(shù)組?
有兩種方法可以做到這一點(diǎn):
1按元素賦值:
遍歷一維數(shù)組,并將每個(gè)元素分配給二維數(shù)組的相應(yīng)元素。
或遍歷二維數(shù)組,并將每個(gè)元素指定給一維數(shù)組的相應(yīng)值。
優(yōu)點(diǎn)是操作靈活,可根據(jù)需要任意賦值。
2當(dāng)一維數(shù)組的類型與二維數(shù)組的類型相同,賦值順序與一維數(shù)組中的存儲(chǔ)順序相同時(shí),可以使用memcpy方法一次直接賦值。
比如一維數(shù)組是a,二維數(shù)組是B,基本類型是type,要分配的元素個(gè)數(shù)是n,就可以調(diào)用
memcpy(B,a,sizeof(type)*n)
這個(gè)方法簡(jiǎn)單有效。
但是,有許多先決條件。當(dāng)上述條件都滿足時(shí),memcpy就更簡(jiǎn)單了。