整数的反向数组索引

时间:2013-02-13 18:31:09

标签: java arrays

我试图反转一个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 个答案:

答案 0 :(得分:2)

问题在于:

int reveresedData[] = data;

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

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

int reveresedData[] = new int[data.length];
int reveresedData[] = data.clone();

答案 1 :(得分:2)

(使用For each循环:更智能的方式) 创建一个方法如下:

 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);

多数民众赞成。

答案 2 :(得分: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];
    }

答案 3 :(得分: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
    }
}
}