当我尝试以下代码时,它会给出正确的答案。但是当我尝试使用a.length
时,它会抛出ArrayIndexOutOfBoundsException
。如何让我的代码使用a.length
?
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] a;
int n = sc.nextInt();
a = new int[n];
for(int i = 0; i <= a.length; i++) {
a[i] = sc.nextInt();
}
for(int i = a.length; i >= 0; i--) {
System.out.println(a[i]);
}
}
答案 0 :(得分:5)
索引a
的{{1}}中没有元素,因为a.length
的索引范围将来自a
。由于没有索引,因此会抛出异常。
答案 1 :(得分:0)
你只能迭代a.length-1,因为索引位置从0开始。所以在上面的例子中做下面的改变,它会按要求工作
for(int i=0; i<a.length; i++)
{
a[i]=sc.nextInt();
}
答案 2 :(得分:0)
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int[] a;
int n=sc.nextInt();
a=new int[n];
for(int i=0; i<a.length; i++) // Remove = from for loop
{
a[i]=sc.nextInt();
}
for(int i = a.length - 1; i>0; i--) // Modify here
{
System.out.println(a[i]);
}
}
}
或者对于反向数组,您可以直接使用如下:
Collections.reverse(Arrays.asList(array));
答案 3 :(得分:0)
您可以在JAVA中使用String函数。 StringBuffer类就像一个动态字符串,内置了很棒的方法。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String num = String.valueOf(n);
StringBuffer b = new StringBuffer(num);
StringBuffer revNum = b.reverse();
String rev = revNum.toString();
int reversedNumber = Integer.parseInt(rev);
System.out.println(reversedNumber);
}
答案 4 :(得分:0)
for(int i=0; i<=a.length; i++) // let say a.length=5;
{ // by default all the element start from
a[i]=sc.nextInt(); //index zero in array 0 1 2 3 4
} //so there is nothing like a[5]
// that's why you are getting arrayOutOfBound
for(int i=a.length; i>=0; i--)
{
System.out.println(a[i]);
}
}