编程以反转数组中的数字

时间:2015-10-23 13:30:55

标签: java

当我尝试以下代码时,它会给出正确的答案。但是当我尝试使用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]);
    }
}

5 个答案:

答案 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]);
    }

}