我试图在Java中反转一个int数组。
此方法不反转数组。
for(int i = 0; i < validData.length; i++)
{
int temp = validData[i];
validData[i] = validData[validData.length - i - 1];
validData[validData.length - i - 1] = temp;
}
有什么问题吗?
我试图在Java中反转一个int数组。
此方法不反转数组。
for(int i = 0; i < validData.length; i++)
{
int temp = validData[i];
validData[i] = validData[validData.length - i - 1];
validData[validData.length - i - 1] = temp;
}
有什么问题吗?
当前回答
你可以用这个
public final class ReverseComparator<T extends Comparable<T>> implements Comparator<T> {
@Override
public int compare(T o1, T o2) {
return o2.compareTo(o1);
}
}
一个简单的
Integer[] a = {1,6,23,4,6,8,2}
Arrays.sort(a, new ReverseComparator<Integer>());
其他回答
这里有一个简单快速的解决方案。希望能有所帮助!
public int[] reverse(int[] arr) {
for(int i = arr.length; i > 0 ; i--){
System.out.print(arr[i-1] + " ");
}
return arr;
}
试试这个程序在JAVA:-
import java.util.Scanner;
public class Rev_one_D {
static int row;
static int[] trans_arr = new int[row];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
row = n;
int[] arr = new int[row];
for (int i = 0; i < row; i++) {
arr[i] = sc.nextInt();
System.out.print(arr[i] + " ");
System.out.println();
}
for (int i = 0; i < arr.length / 2; i++) {
int temp = arr[i];
arr[i] = arr[arr.length - i - 1];
arr[arr.length - i - 1] = temp;
}
for (int i = 0; i < row; i++) {
System.out.print(arr[i] + " ");
System.out.println();
}
}
}
下面是要在您的机器上运行的完整程序。
public class ReverseArray {
public static void main(String[] args) {
int arr[] = new int[] { 10,20,30,50,70 };
System.out.println("reversing an array:");
for(int i = 0; i < arr.length / 2; i++){
int temp = arr[i];
arr[i] = arr[arr.length - i - 1];
arr[arr.length - i - 1] = temp;
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
对于矩阵上使用数组的程序,这将是很好的来源。通过链接。
使用流来反转
这里已经有很多答案,主要集中在就地修改数组。但是为了完整起见,这里有另一种使用Java流来保留原始数组并创建一个新的反向数组的方法:
int[] a = {8, 6, 7, 5, 3, 0, 9};
int[] b = IntStream.rangeClosed(1, a.length).map(i -> a[a.length-i]).toArray();
试试下面的代码:
int arr[] = new int[]{1,2,3,4,5,6,7};
for(int i=0;i<arr.length/2;i++){
int temp = arr[i];
arr[i] = arr[(arr.length-1)-i];
arr[(arr.length-1)-i] = temp;
}
System.out.println(Arrays.toString(arr));