Array Reihenfolge umdrehen

mkiccah

Mitglied
Hi, bin neu hier und versuche mich gerade mit den ersten Programmen. Meine Array funktioniert nur bis zum Zähler i = 5 richtig - warum ??
Java:
public void dreheArrayUm()
  {
  int temp=0;
  for (int i = 0, j = 9; i < 10; i++, j-- )
  {
  temp = zahl [i];
  zahl[i] = zahl[j];
  zahl[j] = temp;
  System.out.println("Platz (j) "+j+ " = " +zahl[j]);
  }

Danke im vorraus für jedwede Hilfe und Tips
 
Zuletzt bearbeitet von einem Moderator:
Also wenn Dein array 10 Plätze hat, dann tauschst Du:
0 mit 9 ok.
1 mit 8 ok.
2 mit 7 ok.
3 mit 6 ok.
4 mit 5 ok.
an der Stelle wärst Du fertig, aber Du machst ja noch weiter:
5 mit 4 -> Damit hast Du zurück getauscht.
Und das geht dann bis
9 mit 9 -> Da ist dann das Array wieder komplett zurück getauscht.

Und brauchst du wirklich j? Kannst Du j nicht ebenso mit i ausdrücken? Das macht dann (meiner Meinung nach) die for Schleife lesbarer. Aber das nur ganz am Rande.
 
Hallo,

Ich bin auch noch Anfänger, aber wenn ich mich richtig erinnere, kann eine for-Schleife nur so aussehen:

for(Initialisierung; Bedingung; Aktion){} also for(int i; i<10 ; i++){}

ich bin mir da aber nicht 100% sicher


dein Problem würde ich so Lösen:
Java:
public int[]dreheArrayUm(int[] array){
     int arrayLaenge = getLength(array);
     int[] tempArray = new int[arrayLaenge];
     for(int i=1; i<arrayLaenge;i++){
         tempArray[arrayLaenge]=array[i];
         arrayLaenge--;
   }
   return tampArray;
}

VG JanNi
 
Die for Schleife ist, so wie sie der TE erstellt hat, prinzipiell korrekt. Halt nur etwas ungewöhnlich und daher auch etwas schwerer zu lesen (meiner Meinung nach).
 
Wenn du i mit 1 initialisierst, wird es schwer an das erste Element im Array zukommen, da du dieses über den Index 0 ansprechen müsstest.

Eine Schleife kann mehrere Zähler haben, die Abbruchbedingung sollte jedoch eindeutig sein.
 
Und der Code von ifly609 hat auch das Problem, dass die Abbruchbedingung auch auf der arrayLaenge beruht und diese Variable ja runter gezählt wird. Dadurch werden nicht alle Werte kopiert.
 
Also Du kannst die Schleife von 0 bist < arrayLaenge laufen lassen und dann ist der Tausch halt zwischen Element i und (arrayLaenge -1 - i)
Ebenso hätte ich bei dem Code vom TE das j ersetzt. Das j ist ja 9 - i (bzw. ArrayLaenge -1 - i, denn ArrayLaenge wäre dort ja 10).
 
Also wenn Dein array 10 Plätze hat, dann tauschst Du:
0 mit 9 ok.
1 mit 8 ok.
2 mit 7 ok.
3 mit 6 ok.
4 mit 5 ok.
an der Stelle wärst Du fertig, aber Du machst ja noch weiter:
5 mit 4 -> Damit hast Du zurück getauscht.
Und das geht dann bis
9 mit 9 -> Da ist dann das Array wieder komplett zurück getauscht.

Und brauchst du wirklich j? Kannst Du j nicht ebenso mit i ausdrücken? Das macht dann (meiner Meinung nach) die for Schleife lesbarer. Aber das nur ganz am Rande.
 

Zurück
Oben