Frage von marl3x, 40

Brauche hilfe mit Variablen bei Java?

Hi,

also ich verzweifle, ich hab schon den ganzen Tag damit rumprobiert und hätte gerne eine gute Erklärung wie das berechnet wird.

void main() {

    int k=6;

    for (int i=1; i<=k/2; k--){
        gib();
    }
}

Warum gibt er mir den Befehl 5 mal raus? Ich versteh es einfach nicht. Wenn ich i<=k mache gibt er ihn 6 mal raus bei der hälfte aber 5 mal. Ich benutze übrigens den Hamster Simulator deshalb der gib(); Befehl.

Danke im vorraus. MfG. Marcel

Antwort
von Cheater0911, 14

Letztes Jahr hatte ich auch informatik - man ist das n kack!

Also die For Schleife macht da alles.

In der For Schleife steht i=1, also ist die Variable i das selbe wie 1. Die Schleife startet also sozusagen mit 1.

Da steht auch i<=k/2. Das bedeutet solange i kleiner als k geteilt durch 2 oder gleich groß wie k geteilt durch 2 ist, wird der Befehl ausgeführt.

Dann steht da noch k--. Das bedeutet, dass k immer eins abnimmt. Ok mal rechnen:

1. Fall 1 ist kleiner als 6 geteilt durch 2 -> wird ausgegeben
2. Fall 1 ist kleiner als 5 geteilt durch 2 -> wird ausgegeben
3. Fall 1 ist kleiner als 4 geteilt durch 2 -> wird ausgegeben
4. Fall 1 ist kleiner als 3 geteilt durch 2 -> wird ausgegeben
5. Fall 1 ist gleich groß wie 2 geteilt durch 2 -> wird ausgeben
Insgesamt wird es 5 mal duchgeführt. Danach käme 1 ist kleiner als 1 geteilt durch 2 - Aber das stimmt ja gar nicht mehr! Deshalb wird es nicht mehr ausgeführt.

Und jetzt mach das gleiche mal für i<=k (also ohne geteilt durch 2!)
1. Fall 1 ist kleiner als 6 -> wird ausgegeben
2. Fall ??? du bist dran. :)

Kommentar von Eismensch ,

Deine Ausführung ist korrekt, jedoch glaube ich war sein "Fehler", dass er statt der Laufvariable "i" die Grenzvariable "k" verändert hat.

Ich vermute er hätte 

 for (int i=1; i<=k/2; i++)


nutzen müssen. Dann würde bei
"i<=k" 6 Durchläufe und bei
"i<=k/2" drei Durchläufe entstehen.

Kommentar von Cheater0911 ,

Oh das habe ich garnicht gesehen! Dachte ich solls nur vorrechnen! Danke :D

Antwort
von TheCookieOfDoom, 29

du hast k- -  geschrieben, jedoch sollte "i" durchlaufen

Kommentar von marl3x ,

Ach du... vielen lieben dank. Aber warum geht es denn nicht so auch? Wieso merkt er nicht das k abgezogen wird?

Kommentar von TheCookieOfDoom ,

bei i<=k ergibt es ja sinn, i bleibt dann ja 1 daher: 1 <= 6, 1 <= 5 usw...
bei i <=k/2 bleibt i in auch 1, k ist am anfang 6:

daher: 1 <= 6
danach durch k- -        k ist 5
also 1 <= 5/2
danach 1 <= 4/2
usw.

Kommentar von marl3x ,

So etwas banales und ich ärgere mich damit so sehr. Dankeschön. Werde dich auszeichnen sobald möglich.

Keine passende Antwort gefunden?

Fragen Sie die Community