1

我正在尝试反转一个 int 值数组。它似乎没有正确地做到这一点。你会注意到我以不同的方式打印,比如Array.toString()和使用println.

原始数组打印:

1 4 9 16 9

我需要它来打印:

9 16 9 4 1

这是我的代码:

import java.util.Arrays;

public class ReverseArray {
    public static void main(String[] args) {
        int[] data = { 1, 4, 9, 16, 9 };
        reverseArray(data);
        int[] dataR = reverseArray(data);
        System.out.println("Reveresed data " + Arrays.toString(dataR));
    }

    public static int[] reverseArray(int[] data) { // returns the reverse of the
                                                    // array data
        // int [] data = new int[5];
        int[] reversedData = new int[data.length];

        data[0] = 1;
        data[1] = 4;
        data[2] = 9;
        data[3] = 16;
        data[4] = 9;

        System.out.println(Arrays.toString(data));
        for (int i = 0; i < data.length - 1; i++) {
            System.out.println("Original Array: " + data[i]);
        }

        int reveresedData[] = data;

        for (int i = 0; i < reveresedData.length - 1; i++) {
            reversedData[(data.length - 1) - i] = data[i];
            System.out.println(reveresedData[i]);
        }
        return reveresedData;
    }

}
4

4 回答 4

2

问题在于:

int reveresedData[] = data;

reveresedData指向与 相同的数组data。相反,您需要创建一个新数组(或更改算法,以便将数组反转到位)。

要创建一个新数组,您可以使用以下任一方法:

int reveresedData[] = new int[data.length];
int reveresedData[] = data.clone();
于 2013-02-13T18:32:11.567 回答
2

(使用 For each loop : Smarter way)创建一个方法如下:

 private int[] reverseArray(int [] array1){
        int index=array1.length;
        int [] array2 = new int[index];
        for(int i:array1){
            array2[index-1]= i;
            index--;
        }
        return array2;    
}

并称它为:

int [] array1 = {1,2,3};
int reversedArray[] = reverseArray(array1);

就是这样。

于 2013-02-13T18:43:05.660 回答
1

应该是这样的:

int reversed[] = new int[data.length];

这将为一个新数组分配空间,您可以以相反的顺序填充数据的值。

for (int i = 0,j=reversed.length-1; i < reversed.length-1; i++;j--){
        reversed[i]=data[j];
    }
于 2013-02-13T18:35:07.797 回答
1

这是反转任意大小数组的基本方法。它反转原始数组。

public class ReverseMyArray {
public static int[] reverseArray(int[] array) {
    for(int i=0; i<array.length/2; i++) {
        int temp = array[i];                    // temp is a temporary variable of type int
        array[i] = array[array.length-1-i];
        array[array.length-1-i] = temp;
    }
    return array;
}

public static void main(String[] args) {
    int[] array = {1,4,9,16,9};
    int[] newArray = reverseArray(array);
    for(int i=0; i<newArray.length; i++) {          
        System.out.print(newArray[i]+" ");      // Print the reversed array values
    }
}
}
于 2013-02-14T22:49:15.020 回答