2017-10-02 1 views
2

私はこのコードを試してみたが、私はそれが動作しない理由としてわからない午前:Javaで配列を逆にするには?

String[] arr = {"A", "B", "C", "D", "E"};//AD 
    String[] arr2 = arr; 
    int last = arr.length-1; 
    int first = 0; 
    int size = arr.length; 
    while (first < size) { 
     arr2[first] = arr[last]; 
     last--; 
     first++; 
    } 
    System.out.print(Arrays.toString(arr2)); 

は誰が助けることはできますか?

+2

'String [] arr2 = arr;'はコピーを作成しません。それはまだ同じ配列です。 – user2357112

+0

* "String [] arr2 = arr;" * - ハリーポッタースタイルの魔法はここで何が起こると思いますか? – Tom

+0

ちょうど同じ長さの新しい配列を作成し、それを後で埋めてください – TheCrzyMan

答えて

2

この行は、あなたがそれと思われることをしません:String[] arr2 = arr。これは単に、変数arr2arrと同じオブジェクトリファレンスで指しているだけです。したがって、効果的に同じものなので、一方の変化は他方の変化に現れます。

アレイを逆順にするには、アレイ全体を反復処理しての値を逆配列にコピーする必要があります。

String[] arr = { "A", "B", "C", "D", "E" }; 
String[] reversed = new String[arr.length]; 

for(int i = 0, j = arr.length-1 ; i < arr.length; i++, j--) { 
    reversed[j] = arr[i]; 
} 
+0

あなたはその場所でそれを行うことができます –

+0

オリジナルを変更することなく、配列を新しい変数に置き換える方法を示す独自の答えを自由に追加できます。 –

+1

うわー、私はあなたがforループでそれをすることができたことを知りませんでした。 –

関連する問題