【问题标题】:Why won't this print in Reverse?为什么不能反向打印?
【发布时间】:2014-04-22 08:05:05
【问题描述】:
我有一个非常简单的问题,但我似乎无法解决它。我在这段代码中遇到了越界错误
int c = 0;
System.out.println();
System.out.println("Printing array in Reverse order:");
for (int i = array.length ; i >= -1; i--)
{
System.out.println(array[i] +" ");
c++;
if(c == 10)
{
System.out.println();
c=0;
}
}
怎么了?
【问题讨论】:
标签:
java
arrays
for-loop
indexoutofboundsexception
【解决方案1】:
你得到一个 IndexOutOfBounds 因为你从数组开始
int c = 0;
System.out.println();
System.out.println("Printing array in Reverse order:");
for (int i = array.length -1; //HERE
i >= 0;//HERE
i--) {
System.out.println(array[i] +" ");
c++;
if(c == 10) {
System.out.println();
c=0;
}
}
【解决方案2】:
for (int i = array.length ; i >= -1; i--) {
错了,数组从索引 0 开始,所以“length”数组是从索引 0 到索引“length - 1”
所以你的代码是错误的,你应该使用
for (int i = array.length - 1 ; i >= 0; i--) {
【解决方案3】:
在 Java 中,数组索引从 0 变为“length - 1”。因此,如果您从array.length 开始,您将尝试访问数组的位置。如果您尝试访问 -1 索引,也会发生同样的情况,因为您的最小索引为 0。
【解决方案4】:
这里有一小段代码可以帮助你得到相反的结果:)
public class newarray {
public static void main(String args[]){
int arr[]={10,20,30};
int size=arr.length;
for(int i=size-1;i>=0;i--){
System.out.println(arr[i]);
}
}
}
输出:
30
20
10