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.
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%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)
Tags und Links java