2016-04-03 3 views
1

Ziemlich verwirrt, wie der folgende Code funktioniert:Führen Methoden von oben nach unten aus, wenn sie von der Hauptmethode aufgerufen werden?

static Scanner sc = new Scanner(System.in); 

    public static int GetAnInteger() 
    { 
     while (!sc.hasNextInt()) 
     { 
      sc.nextLine(); 
      System.out.print("That's not " 
        + "an integer. Try again: "); 
     } 
     return sc.nextInt(); 
    } 

Ich verstehe, dass .hasNextInt() einen Wert erfasst und dient als boolean zu testen, ob es ein int ist. .nextLine() zeichnet die nächste Zeile auf, aber wie debuggt sie die Schleife?

Auch wenn ich den Code ausführen, soll das System die Anweisung nicht drucken, nachdem ich in .nextLine() eingegeben habe?

+0

Ohne zu wissen, was Klasse sc ist, ist es ziemlich schwer zu erklären, obwohl ich es erraten kann. Können Sie die Frage aktualisieren, um den Beitrag zu klären? – Prisoner

+1

Methoden werden in der Reihenfolge aufgerufen, in der sie aufgerufen werden. nicht unbedingt von oben nach unten. –

+0

Wenn Sie sofort ein 'int' eingeben, wird die Schleife effektiv übersprungen. –

Antwort

2

Das Ausrufezeichen bedeutet Boolean nicht. Also kippt es den Wert des Boolean. Wahr zu falsch. Falsch bis wahr.

Eine kurze Zusammenfassung dessen, was dieser Code in Englisch tut, ist die folgende:

Während ihre nächste nicht integer up wird, um die nächste Zeile lesen und die Linie und Druck ignorieren „Das ist nicht eine ganze Zahl ...“. Wenn eine Ganzzahl die nächste Zeile ist, geben Sie die nächste Zeile zurück.

Hoffe das hilft Ihnen, den Code besser zu verstehen. Kommentar Wenn Sie eine detailliertere Erklärung wünschen

Verwandte Themen