2017-09-13 59 views
3

我們被告知要執行下列程序後找到的a[1]值:ArrayList的長度,我不認爲我的老師是正確的關於這個

int [] a = {0,1,2,3,4} ; 
for(p=0 ; p< a.length ; p++){ 
    a[p] = a[ (p + 3) % a.length] ; 
} 

所以我的老師做出來這樣的

a[0] = a[(0+3) % 4]; = 3 
a[1] = a[(1+3) % 4]; = 0 

所以a[1] = a[0]因此a[1] = 3

但我認爲a.length應該是5所以a[1] = a[(1+3) % 5]; = 4

什麼是正確答案?

+7

爲什麼不復制/粘貼代碼並編譯並運行它? – daniu

回答

4

是的,你是部分權利。

長度將是5

但是,如果你的工作你的方式,你會看到

a[0] = a[(0+3) % 5] ===> a[3] = 3; 
a[1] = a[(1+3) % 5] ===> a[4] = 4; 
a[2] = a[(2+3) % 5] ===> a[0] = 3; // note that now a[2] will take updated value of a[0]; 

&等

+1

所以[1]的答案將是4禮? – CALVIN

+0

是,a [1] = a [4]包含4 –

+0

@CALVIN查看更新後的答案詳情 – theLearner

1

你是對的:
a.length是多少數組中的元素。有5個元素:0,1,2,3, 4

因此A[1] = a[(1+3) % 5]; = 4

進一步擴大對.length
當您訪問a[a.length]你是出界。這就是爲什麼你的工廠裏有p < a.length。索引是0-indexed,這意味着第一個元素的索引爲0.但是非零;如果僅存在a[0],則存在1元素。

相關問題