有人能告诉我我的数组代码有什么问题吗?输出正确,但输出底部显示一些错误。
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] number = {1,2,3,4,5};
System.out.println("Number in ascending order: ");
for (int x=0; x < number.length; ++x)
System.out.println(number[x]);
lasttofirst(number);
}
public static void lasttofirst(int[] number)
{
System.out.println("Number in descending order: ");
for (int x=4; x<number.length; --x)
System.out.println(number [x]+ " ");
}
答案 0 :(得分:3)
问题在于以下逻辑
for (int x=4; x<number.length; --x)
当最初x = 4时,它满足条件x<number.length
,因为4 <5
然后x值变为3,对于下一次出现3&lt; 5也满足
...
..
当x值变为0然后0 出现问题现在x值变为-1 然后-1number [-1]给出 ArrayIndexOutOfBoundsException 该数组包含从第0位到第0位的数据元素-1位置数
您可以使用以下逻辑
代替该逻辑for (int x=number.length-1; x>=0; --x)
System.out.println("Index..."+x+"..."+number [x]+ " ");
}
答案 1 :(得分:1)
这里有一个错误:
for (int x=4; x<number.length; --x)
x<number.length
应该阅读x >= 0
。
答案 2 :(得分:1)
您错误地输入了for
循环
如果要向后打印表格元素,则必须从最后开始(因此,长度为1,因为我们从0开始索引),直到x
小于0。
所以它应该是:
for(int i=number.length-1; x>=0; --x){
System.out.println(number[x]); // <-- also you dont need +" ", as printLN inserts new line
}
答案 3 :(得分:0)
我不知道你真正理解你想用
实现的目标lastoffirst(number)
但你的问题就在这里 -
for (int x=4; x<number.length; --x)
我可以看到number.length的值是5并且你从一个小于5的数字开始去除你的循环变量。在一个阶段它试图打印数字[-1]这是不可能的。这就是为什么你会收到这个错误。
干杯。