无法在java中反转排序数组

时间:2014-10-02 10:32:51

标签: java arrays sorting

无法反转另一个数组中的数组值 请指导我如何反转另一个数组中的数组值 我也使用了带有temp变量的swap方法,但它没有效果

import java.util.Scanner;

public class ArrayHW {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Scanner in = new Scanner(System.in);

        System.out.println("please enter the lenght of the array:");

        int len = in.nextInt();

        int k = 0 ;

        int[] array = new int [len];
        int[] invarr = new int[len];

        for( int i = 0; i < len ; i++ ){

        System.out.println("please enter the values:");
        array[i] = in.nextInt();
        }


        //using for loop
        for( int i=0 ; i < len ; i++ ){
            System.out.println("the array in normal case is:" + (i+1) + "\t" + array[i]);

        }

        /*for (int nav : array) {
            System.out.println(nav);
        }*/

        for( int i = len ; i >= 0 ; i--)
        {
            invarr[k] = array[i];
            System.out.println(invarr[k]);              
            k++;                
        }

    }

}

5 个答案:

答案 0 :(得分:5)

您可以使用Collections util class

中的reverse方法
List < Object > list = Arrays.asList(arr);
Collections.reverse(list);
Object[] res = list.toArray();

答案 1 :(得分:3)

您可能遇到IndexOutofBoundException,因为您的反转数组的循环以i=len开头。数组遍历从len-10。所以将你的循环改为:

for( int i = len -1; i >= 0 ; i--)
{
    invarr[k] = array[i];
    k++;
}

答案 2 :(得分:2)

您可以用这种方式反转数组

 int[] arr=new int[]{1,4,5,2};// index of this array are 0,1,2,3
 int[] reverseArr=new int[arr.length];
 int j=0;
 for(int i=arr.length-1;i>=0;i--){ // considering arr from reverse order
     reverseArr[j]=arr[i];
     j++;
 }

代码中的问题

for( int i = len ; i >= 0 ; i--) // there is no index in array for i = len

您的for循环应更正为

for( int i = len-1 ; i >= 0 ; i--)

答案 3 :(得分:1)

您应该从len - 1开始,因为索引从零开始。以这种方式改变你的最后一个循环:

for( int i = len-1; i >= 0 ; i--)
{
    invarr[k] = array[i];
    System.out.println(invarr[k]);
    k++;
}

答案 4 :(得分:0)

您可以使用

Arrays.sort(arr, Collections.reverseOrder());