无法在java中对数组进行反向排序
无法反转其他数组中的数组值 请指导我如何在另一个数组中反转数组值 我也使用了带有临时变量的swap方法,但效果不佳无法在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);
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想反转数组。