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.

InformationsquelleAutor dmoench | 2013-01-19
Schreibe einen Kommentar