Arraylist长度,我不认为我的老师对此是正确的

时间:2017-09-13 06:35:06

标签: java

我们被告知在执行以下程序后找到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

答案是什么?

2 个答案:

答案 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个元素:01234

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

进一步扩展.length
当您访问a[a.length]时,您将无法进入。这就是为什么你的for-contidion中有p < a.length的原因。指数为0-indexed,意味着第一个元素的指数为0.但非正常;如果只有a[0],则存在1元素。