2017-05-22 1 views
1

Ich benutze IntelliJ und ich habe ein Problem mit einem Scanner. Das letzte Element der Eingabe fehlt in der Ausgabe. Irgendwelche Ideen?Warum das letzte Element der Eingabe im Scanner fehlt?

Eingang: 1, 2, 3
Ausgang: 1, 2

public static void main(String[] args) { 
    Scanner sc = new Scanner(System.in).useDelimiter(", "); 
    while (sc.hasNext()) { 
     System.out.print(sc.nextInt()); 
    } 
} 

Antwort

1

Da der Scanner nicht getan liest System.in: der stdin Strom nicht geschlossen ist, und wartet noch auf Ende Token (nächste Vorkommen von ", ") oder Ende der Übertragung.

Sie müssen auch sc.hasNext() zu sc.hasNextInt() ändern, weil Sie sc.nextInt() verbrauchen.

Dann könnten Sie Ihr Programm in der Befehlszeile ausführen, sollte es die 3 richtig dargestellt:

echo -n "1, 2, 3" | java MyScannerExample 

jedoch:

echo "1, 2, 3" | java MyScannerExample 

wird nicht zeigen die 3, weil die Eingabezeichenfolge ist eigentlich "1, 2, 3\n", so ist das letzte Token "3\n", die keine ganze Zahl ist.

Verwandte Themen