Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Array Ausgabe bei Verwendung von 2 Schleifen erklären
ich habe eine Frage und zwar habe ich ein Array deklariert und Initialisiert mit der Länge 7.
Ursprünglich wollte ich ich mir die größte Zahl ausgeben lassen und beim "experimentieren" habe ich auf einmal verzweifelt gemerkt, dass ich die Ausgabe dieser Schleifen nicht nachvollziehen kann.
Java:
int groesste =0;
for(int i = 0; i< list.length; i++){
for(int j= 0; j<i; j++){
groesste ++;
}
System.out.println(groesste);
}
Als Ausgabe habe ich dann da bekommen :
0
1
3
6
10
15
21
Vielleicht kann mir kurz einer erklären wie der Compiler auf diese Ausgabe kommt, das wäre super.
Ja aber zuerst wird in der ersten for-schleife die Bedingung überprüft, ob i =0 kleiner als die länge des arrays ist.
Dies ist ja der Fall, also gehen wir in die inner Schleife.
Weil j auch 0 ist, ist j ja nicht kleiner i also wird groesste als 0 ausgegeben.
Dan geht man wieder in die erste Schleife und i wird um eins erhöht. Also steht i auf 1 ! Wir überprüfen ob 1 kleiner als 7 ist. Trifft zu also springen wir in die zweite for-Schleife.
Das j steht immer noch auf null und null ist kleiner als 1 (i) also wird jetzt groesste um eins erhöht.
So bekommen wir die 1 als Ausgabe...
Ja, das ist auf den ersten Blick nicht zu durchschauen.
Habe dein Programm mal modifiziert.
Jetzt solltest du die Ausgaben nachvollziehen können.
Java:
public class SchleifenTest {
public static void main(String[] args) {
int[] list = new int[7];
int groesste = 0;
for(int i = 0; i < list.length; i++) {
System.out.println("{ Betreten der äußeren Schleife...");
System.out.println(" Zähler i hat den Wert "+i);
System.out.println(" groesste hat den Wert "+groesste);
System.out.println();
for(int j = 0; j < i; j++) {
System.out.println(" { Betreten der inneren Schleife...");
System.out.println(" Zähler j hat den Wert "+j);
System.out.println(" groesste hat den Wert "+groesste);
groesste ++;
System.out.println(" groesste wurde soeben inkementiert!");
System.out.println(" } Verlassen der inneren Schleife.");
System.out.println();
}
System.out.println(" "+groesste+" <- deine Ausgabe");
System.out.println("} Verlassen der äußeren Schleife.\n");
}
}
}
Vielleicht doch noch einmal eine kurze Verständnisfrage ???:L
Warum wird die innere for schleife denn immer wieder auf null gesetzte? und bei der Ausgabe 3, wird ja zunächst erst einmal 2 mal hintereinander groesste inkrementiert, müsste nicht erst eine Ausgabe nach der ersten inkrementierung folgen und dann wieder die nächste Inkrementierung?
Oder gibt es erst eine Ausgabe, sobald die Bedingung nicht mehr gegeben ist?
Wenn die innere Schleife abgearbeitet wurde, wird sie verlassen und der Code der äußeren Schleife weiter abgearbeitet.
Bei jedem weiteren Durchlauf der äußeren Schleife wird auch wieder die innere Schleife erreicht und durchlaufen. Hier wird wieder die Schleife initialisiert, daher steht wieder alles auf 0.