循环遍历数组中的元素

这是我的代码:

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个元素,然后在此之前继续打印。

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

你的循环应该如下所示:

 for(int counter=myArray.length - 1; counter >= 0;counter--){ 
  • 第一个索引是0,最后一个索引是7而不是8
  • 数组的大小是8

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

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

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

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

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

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

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

使用myArray.length-1

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

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