Wie aufhören zu Lesen mehrerer Zeilen von stdin mit Scanner?
Arbeite ich an einer JAVA-Zuordnung Prozess mehrere Zeilen der Eingabe. Die Anleitung Lesen "Eingabe von stdin Lesen."
Beispiel Beispiel für die Eingabe gegeben ist:
one 1
two 2
three 3
Ich verstehe nicht, was das obige Beispiel für die Eingabe "von stdin Lesen" bedeutet.
Hier ist ein test-Programm habe ich geschrieben, dass Isolate meine Verwirrung:
import java.io.*;
import java.util.Scanner;
class Test
{
public static void main(String[] args)
{
Scanner stdin = new Scanner(System.in);
while(stdin.hasNextLine())
{
String line = stdin.nextLine();
String[] tokens = line.split(" ");
System.out.println(Integer.parseInt(tokens[1]));
}
}
Wenn ich dieses Programm ausführen in der Konsole wartet er auf meine Eingabe und jedes mal, wenn ich in Eingang a-line-es gibt es wieder, wie ich es erwarten würde. Also ich dachte, vielleicht ist das Beispiel für die Eingabe oben würde erreicht werden, indem in jeder der 3 Zeilen in diesem Mode. Jedoch, es scheint kein Weg, um den Prozess zu beenden. Nachdem ich die 3 Zeilen, wie kündige ich die Eingabe? Ich habe versucht, drücken Sie die EINGABETASTE zweimal, aber das ist wohl zu Lesen als eine Zeile bestehend nur aus dem newline-Zeichen, welches einen Fehler verursacht, weil die Linie nicht passt der 2-Marker-format erwartet.
Hier ist, was die Konsole Interaktion sieht wie folgt aus:
javac Test.java
java Test
one 1
1
two 2
2
three 3
3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Test.main(Test.java:13)
Ich würde schätzen jede Hilfe, die den Hinweis auf die Lücke in meinem Verständnis.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie könnten versuchen, Fragen für leere Eingaben
Glück!
Könnten Sie auch Ihre Werte in eine Datei z.B. input.txt und tun:
Aus der shell Treffer Strg-D und es wird in der Nähe von stdin. Alternativ, Rohr Eingang in
Beenden der Eingabe, können Sie entweder den Benutzer auffordern, die Eingabe zu beenden, um zu beenden, und testen Sie dann, ob diese Zeichenfolge in der Eingabe, beenden die Schleife, wenn gefunden, oder Sie konnte einen Zähler in die Schleife verlassen der Schleife, wenn die maximale Iterationen erreicht wurden. Die
break
- Anweisung erhalten Sie aus der Schleife.