While Schleife - Logik ?

Fjub

Neues Mitglied
Sali,

bin ein Neuling und arbeite mich durch das Buch " Java von Kopf bis Fuss", die Aufgabe am Ende des Kapitel 1 bereitet mir Probleme.

Code:
    public static void main(String[] args) {
        int x = 0;
        int y = 0;
        while (x < 5) {
            y = x -y;
            System.out.print("x ist = " + x+ " " + "y ist = " + y +" ");
            x = x+1;

Die Ausgabe ist 00 11 21 32 42

Ich komm nicht drauf warum y einen Wert größer als "0" erhält, wenn nur x jeweils um 1 erhöht wird.
y=x-y sollte doch auch immer 0 ergeben egal wie groß x ist.

Ich finde meinen Denkfehler nicht.

Ade Fjub
 
Sali,

bin ein Neuling und arbeite mich durch das Buch " Java von Kopf bis Fuss", die Aufgabe am Ende des Kapitel 1 bereitet mir Probleme.

Code:
    public static void main(String[] args) {
        int x = 0;
        int y = 0;
        while (x < 5) {
            [B]y = x -y;[/B]
            System.out.print("x ist = " + x+ " " + "y ist = " + y +" ");
            x = x+1;

Die wichtige Zeile: y = x -y; (hier erhält y den Wert von X - y --> und x wird größer!)


Du kannst es ja mal im Kopf durchlaufen:
Zuerst ist x= 0;
dann ist y = 0-0; (y ist gleich 0);
dann wird x erhöht: x= 0+1 (x ist gleich 1)
dann wieder in die Schleife: y = 1 - 0 (da mit y nichts passiert, aber mit x und dieses wird letztendlich y zugewiesen) --> y= 1
....

Es ist also so, dass mit y an sich nicht viel passiert. ABER, y wird durch x-y immer größer, da x ja auch immer größer wird...
 
Zuletzt bearbeitet:
Hallo , du möchtest also die while erklärt bekommen? 😉

Y bekommt immer einen größeren Wert da der alte Wert wieder benutzt wird.
Schau mal in der ersten Runde ist y auf 0.

Runde 0 , y =0 , da 0-0
Runde 1, y = 1 , da 1-0
Runde 2, y = 1 , da 2-1
Runde 3 , y= 2 , da 3-1
Runde 4 , y = 2 , da 4-2

usw .

grüße Spin
immer den neuen x wert - den alten y wert
 
Geh doch einfach die Schleif so durch:

Java:
/** Pseudo-Code */x = 0

y = 0 - 0
System.out.println(0, 0)

x = 1

y = 1- 0 // y = 1
System.out.println(1, 1)

x = 2
y = 2-1 //y = 1
System.out.println(2, 1)

y kann sehr wohl größer als 0 werden, weil man ja y = x - y schreibt und man somit den "alten" y-Wert vom x-Wert abzieht und dann den neuen y-Wert bekommt.

Hoffentlich hilft das,
-Luk-
 

Zurück
Oben