向后循环数组中的元素[重复]
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 中的数组索引从0
到length - 1
,而不是1
到length
,因此您应该相应地分配变量并使用正确的比较运算符。
你的循环应该是这样的:
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循环遍历数组