Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向后循环数组中的元素_Java_Arrays_For Loop - Fatal编程技术网

Java 向后循环数组中的元素

Java 向后循环数组中的元素,java,arrays,for-loop,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.ArrayIndexOutOfBoundsEx

这是我的密码:

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中的数组索引从
0
length-1
,而不是从
1
length
,因此,应该相应地分配变量,并使用正确的比较运算符

您的循环应该如下所示:

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

    • 您从错误的索引开始。这样做:

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

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

      使用
      myArray.length-1

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

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

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

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

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

      intmyarray[]={1,2,3,4,5,6,7,8}

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

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

      超出数组边界,因此它显示
      ArrayIndexOutOfBoundsException

      非常感谢这项工作,greatI有了它,但我没有从计数器中拿走1,而是保持原样。很好的工作。如果我不关心索引,我们可以像(int I:nums)
      这样做,但是使用向后顺序。我不知道Java中的数组索引样式,但是如果它与C中的相同,那么您可以尝试在第一次迭代中将数组元素打印出数组边界。提示:如果您使用Intellij IDEA,键入myArray.forr(r表示反向)并按建议中的enter键将生成普通循环的循环,您可以键入myArray.fori