我们被告知在执行以下程序后找到a[1]
的值:
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
答案是什么?
答案 0 :(得分: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)
你是对的:
a.length
是数组中元素的数量。共有5个元素:0
,1
,2
,3
,4
。
因此A[1] = a[(1+3) % 5]; = 4
进一步扩展.length
:
当您访问a[a.length]
时,您将无法进入。这就是为什么你的for-contidion中有p < a.length
的原因。指数为0-indexed
,意味着第一个元素的指数为0.但非正常;如果只有a[0]
,则存在1
元素。