revers array, wie funktionierts ?

JayD2008

Grünschnabel
Hallo,

hab da ein problem. möchte gerne die reverse eines vektors ausgeben lassen


z.B.:

x = { 1, 2, 3, 4} rerverse x' ={ 4, 3, 2, 1}


wie kann ich das jetzt genau in java realisieren.

code anfang wäre z.b.
class Reversion {
public static void main ( String[] args ) {

char[] c = {’a’, ’b’, ’c’, ’d’};
char tmp;
// hatte was mit temp bei google gefunden aus dem ich aber nicht schlüssig wurde


/* Ausgabe normal */
System.out.println(c[0] + " " + c[1] + " " + c[2] + " " + c[3]);


/* Ausgabe der Reversion */
System.out.println(c[0] + " " + c[1] + " " + c[2] + " " + c[3]);
}
}

würd mich freuen wenn mir jemand weiterhelfen könnte ;)


mfg jay
 
Öh, so?
Code:
for (int n=c.length-1; n>=0; n--) {
System.out.println(c[n] + " ");
}
Oder auch im Array vertauschen oder wie?
Wenn im Array dann müsste das so klappen, habs nicht getestet...
Code:
char[] tmp = new char[c.length];
for (int n=c.length-1; n>=0; n--) {
tmp[(c.length-1) - n] = c[n];
}
c = tmp;
 
Zuletzt bearbeitet:
Huhu,

danke erstmal für die Antwort.

also abgesehen davon das ich gerade nur fehler bekomme :p
class Reversion {
public static void main ( String[] args ) {
/* Deklarationen und Intialisierungen */
char[] c = {’a’, ’b’, ’c’, ’d’};


System.out.println(c[0] + " " + c[1] + " " + c[2] + " " + c[3]);

char[] tmp = new char[c.length];
for (int n=c.length-1; n>=0; n--) {
tmp[(c.length-1) - n] = c[n];
}
c = tmp;
/* Ausgabe der Reversion */
System.out.println(c[0] + " " + c[1] + " " + c[2] + " " + c[3]);
}
}

will ich erstmal diese for-schleife genau verstehen.
for (int n=c.length-1; n>=0; n--) {
also der integer n beginnt bei der c.length-1 , diese zählt solange durch bis sie die anzahl an elementen hat und zieht dann bei jedem durchgang einen ab, richtig ?

bitte ein wenig um entschuldigung aber bin totaler anfänger und gerade dabei die materie so langsam zu verstehen :)
 
Also bei mir klappt es... nur die Anführungszeichen beim Array sind die falschen wenn ich es von hier kopieren (müssen die links vom "Enter" sein).
Was die Schleife macht ist eigentlich nur vom letzten Element bis zum ersten zu zählen. Am besten du schreibst dir das einfach mal Schritt für Schritt auf und gehst das mal auf dem Papier durch.
Du könntest die Schleife auch vorwärst Zählen lassen und das dann in der Schleife anpassen.
Oder wie hier, ist vielleicht etwas übersichtlicher...
http://leepoint.net/notes-java/data/arrays/arrays-ex-reverse.html
 
Hi probiers mal mit:

Code:
Collections.reverse(List list)

Natürlich musst Du zuerst Dein Array in eine Liste geben.

Grüße Tim

P.S.
Wenn das für Uni oder Schule ist, dann will Dein Prof. natürlich
die "zu Fuß" Variante. Diese Lösung hier eignet sich aber für den praktischen Einsatz super.
 
Java:
public class TestKlasse {

	public static void main(String[] args) {
		// Ein Array Anlegen
		int[] list = new int[] { 1, 2, 3, 4, 5, 6, 9 };

		// Dieser Methode übergibst du ein Array und bekommst das Array reversed
		// zurück (Methode ist unten)
		int[] l = reverseArray(list);

		// Diese Schleife ist nur eine Ausgabe des Arrray das du zurück bekommen
		// hast
		for (int i = 0; i < l.length; i++) {
			System.out.println(l[i]);

		}
	}

	public static int[] reverseArray(int[] list) {
		// Ein neues Array anlegen welches genauso groß ist wie das was
		// entegegengenommen wurde
		int[] liste_reverse = new int[list.length];

		// Einen Counter anlegen
		int count = 0;

		// Diese Schleife nimmt einen wert aus dem entgegengenommenen Array und
		// setz ihn in das neue Array
		// Count zählt von 0 bis zur länge des entgegengenommen Array hoch
		// i zählt von der Länge des entgegen genommen Array bis 0 runter
		// so kannst du ganz leicht die Werte austauschen.
		for (int i = list.length - 1; i >= 0; i--) {
			liste_reverse[count] = list[i];
			count++;
		}
		// hier wird das neu erstellt Array zurück gegeben
		return liste_reverse;
	}
}
 
Zuletzt bearbeitet:
Zurück