Computerhilfen.de Logo
Forum
Tipps
News

Java While schleife

Bin grad an Klausuren abarbeiten und hab jetzt ein kleines problem, muss eine while schleife machen, welches mir die zahlen ausgibt 121 81 49 25 9 1

mein Ansatz public class test {
 public static void main(String args[])
  {
int i =121, j=40;
 while (i >0)
 {
    System.out.print(i +" ");
    i=i-j;
    j=j-8;
}
}
   
}



doch leider endet das in einer endlos schleife, die abbricht, aber da ja j=40 ist und nach jedem durchgang um 8 kleiner wird und dann das neue j wieder um 8 kleiner, leider hänge da ich 

« Letzte Änderung: 04.08.09, 01:23:02 von SanMarius »

Antworten zu Java While schleife:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

echo $begruessung;

endlos schleife, die abbricht

Was ist denn das? Eine Endlosschleife, die abbricht, ist dann wohl keine Endlosschleife mehr ;)

Du sprichst ein wenig in Rätseln. Und zumindest die Info, dass es sich um eine Zahlenfolge mit einer festen Bildungsvorschrift handelt, wäre nett gewesen.

So, und nun schau dir mal an, was du da programmiert hast. Vom ersten Glied der Reihe soll 40 subtrahiert werden, der Subtrahend soll dann bei jedem Schritt um 8 reduziert werden. Du reduzierst aber VOR der eigentlichen Subtraktion. Somit werden von 121 nicht 40, sondern 32 abgezogen. Da müssen also 2 Zeilen in deinem Code getauscht werden.

Zweites Problem: Deine Abbruchbedingung in der Schleife. Wenn du die Zahlenfolge mal durchspielst, dann wirst du feststellen, dass der schrittweise kleiner werdende Subtrahend irgendwann negativ wird. Und was passiert bei Subtraktion einer negativen Zahl? Richtig, wir addieren! Somit wird in deinem Fall i niemals <=0, womit du eine wunderbare Endlosschleife kreiert hast.

Man kann das Ganze zu Testzwecken übrigens mal ganz einfach darstellen: zusätzliche Zählvariable einführen und diese bei jedem Schleifendurchlauf inkremetieren, sagen wir bis 10. Im Kopf der Schleife definierst du genau das als Abbruchbedingung. Somit kannst du unabhängig von den Werten deiner Reihe mal schauen, wie sich die Reihenglieder wertemäßig so entwickeln ;)

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
1 Leser hat sich bedankt

ok, hab den fehler gefunden, hab einfach die while schleife geändert in
 while (j>=0)

und somit klappt es.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
ok, hab den fehler gefunden, hab einfach die while schleife geändert in
 while (j>=0)

und somit klappt es.

Nö, tut es sicher nicht. Deine Reihe wird auf die Art trotzdem nicht richtig berechnet.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Wie wäre es stattdessen mit:

public class test {
    public static void main(String args[]) {
        for (int i = 11; i > 0; i = i-2) {
            System.out.print(i*i + " ");
        }
    }
}

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

thx Lisaa, die idee ist gut, da es ja mit sich multiplizierende zahlen sind^^, da es aber eine While schleifen sein musste, hab ich dann so gemacht

public class zahl {
 public static void main(String args[])
  {
int i =11;
 while (i >0)
 {
    System.out.print(i*i +" ");
    i=i-2;
}
}
   
}

Naja, leider kam heut in der Klausur keine einzige Schleife :-\ 


« umwandeln htm(html) in xls Datei.jar-dateien/ handy-spiele programmieren »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!