向后循环数组中的元素[重复]

Posted

技术标签:

【中文标题】向后循环数组中的元素[重复]【英文标题】:Looping through the elements in an array backwards [duplicate] 【发布时间】:2012-03-11 21:03:22 【问题描述】:

这是我的代码:

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 中的数组索引样式,但如果它与 C 中的相同,则您试图在第一次迭代中将数组元素打印出数组边界.. 提示:如果您使用 Intellij IDEA,输入 myArray.forr(r 表示反向)并在建议处按 enter 将生成循环对于正常循环,您可以输入 myArray.fori 【参考方案1】:

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

你的循环应该是这样的:

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

【讨论】:

非常感谢,效果很好 我有这个,但我没有从柜台拿走 1,而是把它留在原样。干得好。 如果我不关心索引,我们能不能像for (int i : nums)这种类型那样做,但顺序是向后的。【参考方案2】: 第一个索引是 0,最后一个索引是 7 而不是 8 数组大小为8

【讨论】:

【参考方案3】:

使用myArray.length-1

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

【讨论】:

【参考方案4】:

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

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

【讨论】:

【参考方案5】:

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

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

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

【讨论】:

【参考方案6】:

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

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

【讨论】:

【参考方案7】:

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

【讨论】:

以上是关于向后循环数组中的元素[重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP——数组中的each(),list()和while循环遍历数组

java怎么判断数组中有重复的元素

我的 for 循环没有根据条件删除数组中的项目? Python [重复]

foreach 循环重复数组中的最后一项

使用数组时,Javascript 向后循环变慢?

实现将一维数组A(下标从1开始)中的元素循环右移k位,要求只用一个元素大小的辅助空间