Java Schleife?
Schreibe eine Methode, die ...
ein Array von 10 ganzen Zahlen erzeugt und dieses mit den Werten 0², 1², 2², ... belegt und ...danach die Zahlen von 9² bis 0² ausgibt
Hätte man nach dem "einfachen code" also quasi bei aufgabe 2 auch folgendes hinschreiben können:
For (i=9; i>zahlen.lenght; i--)
3 Antworten
Hey,
fast richtig.
public class SquaresArray {
public static void main(String[] args) {
SquaresArray squaresArray = new SquaresArray();
int[] array = squaresArray.generateSquaresArray();
squaresArray.printArrayReverse(array);
}
public int[] generateSquaresArray() {
int[] squaresArray = new int[10];
for (int i = 0; i < squaresArray.length; i++) {
squaresArray[i] = i * i;
}
return squaresArray;
}
public void printArrayReverse(int[] array) {
for (int i = array.length - 1; i >= 0; i--) {
System.out.println(array[i]);
}
}
}
"For (i=9; i>zahlen.lenght; i--)" bricht direkt ab, weil die Bedingung i>zahlen.length sofort erfüllt wird. Daher nutzt Du i >= 0.
Das ist genau andersrum als bei Schleifen, welche den Index inkrementieren (i++, oder auch i = i +1).
Das i-- ist eine Kurzform von i = i - 1. Das heißt i wird bei jedem Schleifendurchlauf um 1 verringert. Die Schleifenabbruchbedingung muss also prüfen, ob der Index größer gleich 0 ist. Du fängst bei der Schleife also vom Ende des Arrays an.
Gruß
public class SquaresArray {
public static void main(String[] args) {
int[] arr = new int[10];
for(int i = arr.length - 1; i >= 0; i--)
{
arr[arr.length - i] = i * i;
}
for(int i = 0; i < arr.length; i++)
{
System.out.println(arr[i]);
}
}
}
For (i=9; i>zahlen.lenght; i--)
Die Schleife bricht ja sofort ab nach der ersten Iteration weil dein zahlen.length ja bereits 10 ist..
Du müsstest i=zahlen.length-1 setzen und dann prüfen ob i>=0 ist:
for (let i = zahlen.length - 1; i >= 0; i--) {
console.log(zahlen[i]);
Du definierst halt eine variable, i. Das passiert zum Beginn vor der ersten Ausführung der Schleife einmalig.
Ich würde sie mit zahlen.length -1 definieren, auch wenn das in deinem Fall 9 ist - mag ja vielleicht mal weitere Fälle geben dann muss man nichts umschreiben.
Das zweite ist die Prüfung, die jedes Mal stattfindet. Die Schleife läuft solange i > 0 ist in dem Beispiel. Es wird also immer geprüft ob das stimmt, dann wird ausgeführt, sonst geht's weiter im Code nach der Schleife.
Das i-- ist eine Operation, die nach jeder Iteration der Schleife durchgeführt wird und verringert das i um 1. Irgendwann ist dann I eben so klein dass die Prüfung i>=0 nicht mehr greift. Dann wird die Schleife nicht mehr ausgeführt.
Ich würde da nichts versuchen durch Eselbrücken zu merken sondern einfach verstehen was du da treibst.
Also i=9: i>0; i--
Das erste ist immer der Startwert, das zweite Endwert?
Kann man sich das naxh diesem Schema merken?