2016-12-13 3 views
0

Ich weiß, das ist ziemlich einfach, aber ich weiß nicht, warum mein Code nicht funktioniert. Der unten stehende Code soll das Array umkehren, aber ich möchte unbedingt wissen, warum der Output gleich bleibt! Jede Erklärung wird anerkannt werden :)Reverse ein Array, aber funktioniert nicht

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' ändert das Array in Ihrer' main' Methode nicht. –

Antwort

1

Sie müssen die Methode ändern nach folgendem:

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

Um weitere Details über das Lesen Sie mehr über Pass von Wert zu finden und vorbei Referenz in Java.

+0

Können Sie erklären, warum Sie das Problem nicht lösen können, wenn Sie das Problem nicht beheben? Was ist das Problem mit Leere? Ich dachte das Listenfeld ist statisch, also sollte es funktionieren? –

+0

@PemiNg 'void' vor einer Methode bedeutet, dass nichts zurückgegeben wird. Aber Sie müssen das 'int []' zurückgeben. –

+0

Danke! jetzt habe ich es verstanden! –

Verwandte Themen