Wie zu verwenden .nextInt() und hasNextInt() in einer while-Schleife
So, ich möchte mein Programm zum Lesen einer Eingabe, die einige ganze zahlen in einer Zeile, zum Beispiel:
1 1 2
Dann sollte es jeder Lesen integer getrennt und drucken Sie es in einer neuen Zeile. Die Anzahl der zahlen, das Programm hat zu Lesen, ist nicht im Voraus gegeben, also, was ich versuche zu tun, ist die Verwendung einer while-Schleife, die endet, wenn es keine weitere ganze zahlen zu Lesen. Dies ist der code, den ich schrieb:
while (scan.hasNextInt()) {
int x = scan.nextInt();
System.out.println(x);
}
aber es funktioniert nicht richtig, da die Schleife nie endet, es will nur der Benutzer-Eingang mehr zahlen. Was vermisse ich hier?
InformationsquelleAutor patriciasmith | 2014-10-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihren scanner im Grunde wartet, bis ein Ende der Datei kommt. Und wenn Sie es in der Konsole passiert das nicht, so wird es weiter laufen. Versuchen Sie das Lesen der ganzen zahlen von einer Datei, werden Sie bemerken, dass Ihr Programm beendet.
Falls Sie neu sind, zu Lesen aus einer Datei, erstellen Sie eine
test.txt
in Ihrem Projekt Ordner und verwenden SieScanner scan = new Scanner(new File("test.txt"));
mit Ihrem code.InformationsquelleAutor Gooey
Den
hasNextInt
nennen Blöcke, bis Sie genug Informationen, um die Entscheidung "ja/Nein".Drücken Strg+Z auf Windows (oder Strg+D auf "unix") zu schließen, die standard-input-stream und das auslösen eines EOF. Alternativ geben Sie in ein nicht-integer-und drücken Sie die EINGABETASTE.
Console input ist normalerweise line-buffered: Sie die EINGABETASTE gedrückt werden muss (oder EOF ausgelöst) und die ganze Zeile wird auf einmal bearbeitet.
Beispiele, wo ^Z bedeutet, dass Strg+Z (oder Strg+D):
Siehe auch:
InformationsquelleAutor user2864740
Wenn Sie, wie zu stoppen Ihre Schleife nach der Zeile, erstellen Sie Ihre
Scanner
wie diese:Der trick ist, definieren Sie ein Trennzeichen, das Leerzeichen enthält, wird der leere Ausdruck, aber nicht die nächste Zeile-Zeichen.
Diese Art der
Scanner
sieht die\n
gefolgt von einem Trennzeichen (nichts) und die Eingabe wird beendet, nachdem die EINGABETASTE zu drücken.Beispiel:
1 2 3\n
geben Sie den folgenden Token:
Integer(1) Integer(2) Integer(3), nicht ganzzahlige(\n)
So ist die
hasNextInt
gibt false zurück.InformationsquelleAutor Cfx