2016-04-09 4 views
-1

Ich habe mit einer Übung im Java Headfirst Buch (CH5: p121 als Referenz) gekämpft. Es ist eine Schleife innerhalb einer anderen Schleife, die einige Werte von Instanzvariablen hinzufügt/subtrahiert.Q: Headfirst Java For-Schleife Übung (Mixed Messages CH5)

Eingang: x = x + 3

Ausgänge: x = 54 y = 6

public class MixFor5 { 
public static void main(String[] args) { 
    int x = 0; 
    int y = 30; 
    for (int outer = 0; outer < 3; outer++) { 
    for (int inner = 4; inner > 1; inner--) { 
    x = x + 3; 
    y = y - 2; 
    if (x == 6) { 
    break; 
    } 
    x = x + 3; 
    } 
    y = y - 2; 
    } 
    System.out.println(x + " " + y); 
} 
} 

Ihr Ergebnis wird, wenn es allein mit einem Notizblock tut, ist x = 42 y = 8 weil dann beide Schleifenbedingungen erfüllt sind. Was mache ich falsch? Wo bin ich in meinem Gedankenprozess falsch gelaufen?

das sind meine Notizen ->pastebin note

ich nicht das Debuggen zuerst versucht habe, weil ich mich in erster Linie, diese Zahl will, so dass ich in der Zukunft nicht die gleichen Fehler machen.

Vielen Dank im Voraus,

tvanderv

Antwort

0

if(x == 6) wird nie wahr bekommen. Der Grund dafür ist,

Wenn inner = 4

x = x + 3 führt zweimal d.h. x = 6 bedeutet.

dann, inner = 3 jetzt erster x = x + 3 (vor if(x == 3) Zustand) gibt Ausgang x = 9. So wird Schleife nicht brechen.

Sie haben diesen Schritt in Ihren Notizen falsch gemacht.