while schleife

SMoeller

Mitglied
Moin,
ich habe ein Programm, indem mehrere Schleifen vorkommen. Dabei zählt eine Variable, wie oft die Schleife wiederholt wurde, bis sie mit false gewertet wird und am Ende wird ausgegeben, wie viele oft der Benutzer die Schleife durchlaufen hat. Dann kann sich der Benutzer entscheiden, ob er das Programm noch einmal durchlaufen möchte. Allerdings ist in der Variablen, die die Durchläufe gezählt hat noch der Wert von den vorigen Durchläufen gespeichert. Am folgenedem Beispiel ist es glaube ich besser zu verstehen:

Der Benutzer durchläuft die Schleife 2 mal und am Ende wird ausgegeben, dass er die Schleife zweimal durchlaufen hat. Dann entscheidet er sich, alles noch einmal zu machen und benötigt wieder zwei Durchläufe. Nun wird aber 4 anstatt 2 am Ende ausgegeben.

Irgendwie muss ich die Variable doch dann wieder 0 setzen können oder?
 
Moin Sascha,
klar geht das! Du weißt einfach IN der Schleife, ganz am Anfang oder halt ganz am Ende (würde es aber der Lesbarkeit wegen ganz am Anfangn machen) den Wert 0 zu. Jedesmal wenn nun wieder die Schleife durchläuft setzt er zuerst die Variable auf 0 und macht dann von der 0 ausgehend weiter!
Hoffe ich habs richtig verstanden, ansonsten poste mal deinen bisherigen Code, da sieht man einfach am besten was falsch ist. :)
Achso, warum machsten das erst so spät? ;) Die 15 Punkte sind schon weg, musst mal früher anfangen :D

Tschöö,
Jens
 
Ich habe so was Codiert und hoffe dass ich es richtig verstanden habe:
Code:
 int i = 0;
     String auswahl;
     while(true)
     {
     ++i;
 
     BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
     
     
     if(i % 2 == 0)
     {
        System.out.println("Sie haben die Schleife: " + i + " durchgelaufen");
        System.out.println("Wollen Sie es nocheinmal durchlaufen(j/n)");
        
        try
        {
        auswahl = in.readLine();
        if(auswahl.equals("j") == true)
         continue;
        else
         break;
        }
        
        catch(IOException keineEingabe)
        {
         
        }
     }
   
     }
Die Ausgaben sind folgende:
Sie haben die Schleife: 2 durchgelaufen

Wollen Sie es nocheinmal durchlaufen(j/n)

j

Sie haben die Schleife: 4 durchgelaufen

Wollen Sie es nocheinmal durchlaufen(j/n)

j

Sie haben die Schleife: 6 durchgelaufen

Wollen Sie es nocheinmal durchlaufen(j/n)

 
Warum lagerst Du denn nicht einfach diesen Ablauf in eine Prozedur oder Funktion aus und lagerst die If-Abfrage außerhalb der Schleife aus und lässt sie sich rekursiv wiederholen.
Oder wenn Dir das zu Umständlich ist, dann mach um das Ganze noch eine zweite Schleife und lager die If-Abfrage zwischen beiden Schleifen.
 
Ich denk nicht kompliziert, sondern wie ein Informatiker und dieser löst fast alles per Rekursion und nicht mit Schleifen. Rekursionen sind viel eleganter. Und Spaß hab ich immer beim Proggen. :)

EDIT: Außerdem hast Du ihn nicht richtig verstanden. Er wollte nicht die Schleifendurchläufe addieren, sondern immer wieder bei 0 anfangen zu zählen.
 
Zuletzt bearbeitet:
Zurück