无法在java中对数组进行反向排序

无法在java中对数组进行反向排序,java,arrays,sorting,Java,Arrays,Sorting,无法反转其他数组中的数组值 请指导我如何在另一个数组中反转数组值 我也使用了带有临时变量的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);

无法反转其他数组中的数组值 请指导我如何在另一个数组中反转数组值 我也使用了带有临时变量的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++;                
        }

    }

}

可以用这种方法反转数组

 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--)
您可能遇到IndexOutofBoundException,因为反转数组的循环从i=len开始。数组从len-1遍历到0。因此,将循环更改为:

for( int i = len -1; i >= 0 ; i--)
{
    invarr[k] = array[i];
    k++;
}
您应该从len-1开始,因为索引是基于零的。通过以下方式更改最后一个循环:

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

您可以使用集合util类中的反向方法

List < Object > list = Arrays.asList(arr);
Collections.reverse(list);
Object[] res = list.toArray();
你可以用

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

数组的最后一个可用索引是length-1。所以最后一个循环应该是int i=len-1;i>=0;我想按某种顺序对数组排序,还是只想颠倒数组元素的顺序?非常感谢我的朋友,很好。你不需要最后一行。arr是反向的。@aioobe你是什么意思?我的意思是不需要使用list.toArray来获取结果数组。arr本身是反向的。不过请注意,arr需要使用Integer[]类型才能工作。谢谢,但这也将帮助他学习comparator:我将把它添加到我的答案中。顺便说一句,OP不想对数组排序,OP想反转数组。