我试图在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 static int[] reverse(int[] array) {

    int j = array.length-1;
    // swap the values at the left and right indices //////
        for(int i=0; i<=j; i++)
        {
             int temp = array[i];
                array[i] = array[j];
                array[j] = temp;
           j--;
        }

         return array;
    }

      public static void main(String []args){
        int[] data = {1,2,3,4,5,6,7,8,9};
        reverse(data);

    }

其他回答

最有效的方法是向后迭代数组。

我不确定Aaron的解决方案是否调用Collections.reverse(list);有人知道吗?

int[] arrTwo = {5, 8, 18, 6, 20, 50, 6};

    for (int i = arrTwo.length-1; i > 0; i--)
    {
        System.out.print(arrTwo[i] + " ");
    }

番石榴

使用谷歌Guava库:

Collections.reverse(Ints.asList(array));

它有两个解

Loop Recursion public class _1_ReverseArray { public static void main(String[] args) { int array[] = {2, 3, 1, 4, 9}; //reverseArray(array, 0, array.length - 1); reverseArrayWhileLoop(array, 0, array.length - 1); printArray(array); } private static void printArray(int[] array) { for (int a : array) { System.out.println(a); } } private static void reverseArray(int[] array, int start, int end) { if (start > end) { return; } else { int temp; temp = array[start]; array[start] = array[end]; array[end] = temp; reverseArray(array, start + 1, end - 1); } } private static void reverseArrayWhileLoop(int[] array, int start, int end) { while (start < end) { int temp; temp = array[start]; array[start] = array[end]; array[end] = temp; start++; end--; } } }

public class TryReverse {
    public static void main(String[] args) {        
        int [] array = {2,3,4,5,6,7,8,9};       
        reverse(array);
        for(int i=0; i<array.length; ++i)
            System.out.print(array[i] + " ");
    }
    public static void reverse (int [] array){
        for(int start=0, end=array.length-1; start<=end; start++, end--){
            int aux = array[start];
            array[start]=array[end];
            array[end]=aux;
        }
    }
}