循环遍历数组中的元素

时间:2012-02-21 14:44:07

标签: java arrays for-loop

这是我的代码:

int myArray[]={1,2,3,4,5,6,7,8};

for(int counter=myArray.length; counter > 0;counter--){
    System.out.println(myArray[counter]);
}

我想按降序打印出数组,而不是按升序排列(从数组的最后一个元素到第一个元素),但我只是抛出了这个错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
    at task1.main(task1.java:14)

为什么会这样?我希望通过使用myArray.length将计数器设置为8,代码将打印出数组的第8个元素,然后在此之前继续打印。

7 个答案:

答案 0 :(得分:55)

Java中的数组从0length - 1编号,而不是1length,因此您应该相应地分配变量并使用正确的比较运算符。 / p>

你的循环应如下所示:

for(int counter=myArray.length - 1; counter >= 0;counter--){

答案 1 :(得分:4)

  • 第一个索引为0,最后一个索引为7而不是8
  • 阵列的大小为8

答案 2 :(得分:3)

使用myArray.length-1

  for(int counter=myArray.length-1; counter >= 0;counter--){
                System.out.println(myArray[counter]);
            }

答案 3 :(得分:3)

这里的问题是这段代码:myArray.length。在Java中,与大多数其他语言一样,数据结构基于0,因此最后一个元素的索引为structure.length - 1(第一个元素为0)。因此,在您的情况下,您应该按如下方式更改循环:

for(int counter=myArray.length - 1; counter >= 0;counter--){
            System.out.println(myArray[counter]);
        }

答案 4 :(得分:2)

你是从错误的索引开始的。这样做:

for(int counter= myArray.length - 1; counter >= 0;counter--) {

数组的最后一个索引是它的长度减去1。

答案 5 :(得分:2)

计数器从myArray.length的索引开始,实际上是从1而不是0开始计算..

    for(int counter=myArray.length - 1; counter > 0; counter--){

答案 6 :(得分:0)

int myArray[]={1,2,3,4,5,6,7,8};

这里,给定数组长度为8,因为计数从1开始但是为索引myArray[0] = 1;而来 等等......这里索引计数从0开始。 所以在你的代码中

for(int counter = myArray.length - 1; counter >= 0; counter--) {  

离开数组边界,因此显示ArrayIndexOutOfBoundsException