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

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

それでおしまい。

于 2013-02-13T18:43:05.660 に答える
2

問題は、次のことです。

int reveresedData[] = data;

と同じ配列をreveresedData指しdataます。代わりに、新しい配列を作成する必要があります (または、配列を元に戻すようにアルゴリズムを変更します)。

新しい配列を作成するには、次のいずれかを使用できます。

int reveresedData[] = new int[data.length];
int reveresedData[] = data.clone();
于 2013-02-13T18:32:11.567 に答える
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 に答える