Warum gibt nextLine () eine leere Zeichenfolge zurück? [Duplikat]

8

Dies ist wahrscheinlich eines der einfachsten Dinge, aber ich sehe nicht, was ich falsch mache.

Meine Eingabe besteht aus einer ersten Zeile mit einer Nummer (die Anzahl der zu lesenden Zeilen), einer Reihe von Zeilen mit Daten und einer letzten Zeile nur mit \ n. Ich sollte diese Eingabe verarbeiten und nach der letzten Zeile etwas arbeiten.

Ich habe diese Eingabe:

%Vor%

Und zum Lesen der Eingabe habe ich diesen Code.

%Vor%

Meine Frage ist, warum drucke ich nichts? Programm liest die erste Zeile und dann nichts.

    
Favolas 16.04.2013, 15:08
quelle

3 Antworten

31

nextInt liest das folgende Zeichen für die neue Zeile nicht, also das erste nextLine ( gibt den Rest der aktuellen Zeile zurück) gibt immer eine leere Zeichenfolge zurück.

Das sollte funktionieren:

%Vor%

Aber mein Ratschlag ist nicht, nextLine mit nextInt / nextDouble / next / usw. zu mischen, weil jeder, der versucht, den Code zu pflegen (selbst eingeschlossen), sich dessen nicht bewusst ist oder es vergessen hat oben, so kann durch den obigen Code etwas verwirrt werden.

Also schlage ich vor:

%Vor%     
Dukeling 16.04.2013, 15:13
quelle
1

Ich denke, ich habe dieses Problem schon einmal gesehen. Ich denke, Sie müssen ein weiteres readInput.nextLine() hinzufügen, sonst lesen Sie nur zwischen dem Ende von 5 und dem \n danach

%Vor%     
Sam I am 16.04.2013 15:13
quelle
0

Tatsächlich beantwortet es die Frage nicht vollständig (warum Ihr Code nicht funktioniert), aber Sie können folgenden Code verwenden.

%Vor%

Für mich ist es lesbarer und kann sogar Ihre Zeit in solchen seltenen Fällen sparen, wenn Testfälle falsch sind (mit zusätzlichen Informationen am Ende der Datei)

Übrigens, Sie scheinen an einem Programmierwettbewerb teilzunehmen. Beachten Sie, dass der Scanner sehr langsam Daten eingeben kann. Sie können in Erwägung ziehen, BufferedReader mit möglichem StringTokenizer zu verwenden (wird in dieser Aufgabe nicht benötigt)

    
RiaD 16.04.2013 15:21
quelle

Tags und Links