2016-12-13 11 views
0

これはかなり基本的ですが、なぜ私のコードが機能しないのか分かりません。以下のコードは配列を逆にすることになっていますが、出力が同じままである理由を知りたいと思っています。任意の説明が理解されるであろう:)配列を逆にしても動作しません

public class Test { 
    public static void main(String[] args) { 
     int[] oldList = {1, 2, 3, 4, 5}; 
     reverse(oldList); 
     for (int i = 0; i < oldList.length; i++) 
      System.out.print(oldList[i] + " "); 
    } 
    public static void reverse(int[] list) { 
     int[] newList = new int[list.length]; 
     for (int i = 0; i < list.length; i++) 
      newList[newList.length] = list[list.length - 1 - i]; 
     list = newList; 
    } 
} 
+2

'list = newList'は' main'メソッドの配列を変更しません。 –

答えて

1

あなたは以下に記載の方法を変更する必要があります:

public class Test { 
    public static void main(String[] args) { 
     int[] oldList = {1, 2, 3, 4, 5}; 
     oldList = reverse(oldList); //assign the returned value from the method 
     for (int i = 0; i < oldList.length; i++) 
      System.out.print(oldList[i] + " "); 
    } 
    public static int[] reverse(int[] list) { 
     int[] newList = new int[list.length]; 
     for (int i = 0; i < list.length; i++) 
      newList[newList.length] = list[list.length - 1 - i]; 
     list = newList; 
     return list; 
    } 
} 

をこれについての詳細を調べるには価値がよりおよそパスを読み、参照渡しJavaの

+0

voidを省略すると、問題が解決する理由を説明できますか? voidの問題は何ですか?私はリスト配列が静的だと思ったので、うまくいくはずですか? –

+0

@PemiNgメソッドの前にある 'void'は、何も返さないことを意味します。しかし、int []を返さなければなりません。 –

+0

ありがとう!今私はそれを得る! –

関連する問題