这是我的代码:
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个元素,然后在此之前继续打印。
答案 0 :(得分:55)
Java中的数组从0
到length - 1
编号,而不是1
到length
,因此您应该相应地分配变量并使用正确的比较运算符。 / p>
你的循环应如下所示:
for(int counter=myArray.length - 1; counter >= 0;counter--){
答案 1 :(得分:4)
答案 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
。