Wie kann ich mit dem Scanner mehrere Zeilen von stdin lesen?

8

Ich arbeite an einer JAVA-Zuweisung sollte mehrere Zeilen der Eingabe verarbeiten. Die Anweisungen lesen "Eingabe wird von Standard gelesen."

Ein Beispiel für eine Beispieleingabe ist gegeben:

%Vor%

Ich verstehe nicht, was die obige Beispieleingabe "von stdin lesen" bedeutet.

Hier ist ein Testprogramm, das ich geschrieben habe, das meine Verwirrung isoliert:

%Vor%

Wenn ich dieses Programm in der Konsole ausführe, wartet es auf meine Eingabe und jedes Mal, wenn ich eine Zeile eintrage, gibt es das zurück, wie ich es erwarten würde. Also dachte ich, dass die obige Beispieleingabe erreicht werden könnte, indem jede der 3 Zeilen auf diese Weise eingegeben würde. Es scheint jedoch keine Möglichkeit zu geben, den Prozess zu beenden. Nachdem ich die 3 Zeilen eingegeben habe, wie beende ich die Eingabe? Ich habe versucht, nur zweimal Enter zu drücken, aber das scheint als eine Zeile zu lesen, die nur aus dem Newline-Zeichen besteht, was einen Fehler verursacht, weil die Zeile nicht in das erwartete 2-Token-Format passt.

So sieht die Konsoleninteraktion aus:

%Vor%

Ich würde jede Hilfe schätzen, wenn ich auf die Lücke in meinem Verständnis hinweisen würde.

    
dmoench 19.01.2013, 04:42
quelle

4 Antworten

4

Sie könnten versuchen, nach leeren Eingaben zu fragen

%Vor%
  • Ihr Code ist fast fertig. Alles, was Sie tun müssen, ist, die while-Schleife zu verlassen. In diesem Codebeispiel habe ich eine Bedingung hinzugefügt, die zuerst den gelesenen Eingabewert auf Zeile setzt und zweitens den zurückgegebenen String überprüft, wenn dieser leer ist. Wenn dies der Fall ist, gibt die zweite Bedingung der while-Schleife false zurück und lässt sie stehen.
  • Die Ausnahme für den Array-Index außerhalb des Bereichs erhalten Sie nur, wenn Sie nicht mindestens zwei Werte eingeben, die durch Leerzeichen begrenzt sind. Wenn Sie nicht versuchen würden, den zweiten Wert & gt; token [1] & lt; Durch einen statischen Index können Sie diesen Fehler vermeiden.
  • Wenn Sie mit Lesern arbeiten, denken Sie daran, sie nach dem Gebrauch zu schließen.
  • Last but not least - haben Sie den üblichen Hotkey Strg + C probiert, um Prozesse in Konsolen zu beenden?

Viel Glück!

    
marwils 19.01.2013 05:30
quelle
2

Sie können Ihre Werte auch in eine Datei z. input.txt und tun:

%Vor%     
denmojo 30.06.2015 22:13
quelle
1

Tippen Sie in der Shell Strg-D an, um die Standardeingabe zu schließen. Alternativ kann die Rohreingabe in

erfolgen %Vor%     
Mike Samuel 19.01.2013 04:45
quelle
1

Um die Eingabe zu stoppen, können Sie den Benutzer entweder auffordern, quit zu beenden und dann auf das Vorhandensein dieses Strings in der Eingabe zu testen, die Schleife zu schließen, wenn er gefunden wird, oder Sie können einen Zähler in der Schleife verwenden, um zu beenden die Schleife, wenn die maximalen Iterationen erreicht wurden. Die Anweisung break wird Sie aus der Schleife herausholen.

    
Hovercraft Full Of Eels 19.01.2013 04:45
quelle

Tags und Links