Lesen Sie die Standardeingabe in Java

Dieser Artikel basiert auf der Motivation der anderen Macht: "Ich kenne die besten Praktiken nicht gut. Wenn Sie sie also vorerst in Qiita schreiben, wird Ihnen eine detaillierte Person sagen", anstatt "die besten Praktiken selbst zu zeigen". Masu (´ ´ ω ・ `) Ein Test, der versucht, am kollektiven Wissen des Internets festzuhalten.

Erstens ist derjenige, der BufferedReader verwendet, häufig in Blog-Artikeln im Internet zu finden.

var stdin = new BufferedReader(new InputStreamReader(System.in));

//Lesen Sie die Standardeingabe Zeile für Zeile.
String line;
while ((line = stdin.readLine()) != null) {
    doSomething(line);
}

//Wenn der von der Standardeingabe angegebene Wert ein numerischer Wert ist, muss er selbst konvertiert werden.
while ((line = stdin.readLine()) != null) {
    int i = Integer.valueOf(line);
    doSomething(i);
}

//Einfach zum Streamen zu verbinden.
stdin.lines().forEach(System.out::println);
stdin.lines().mapToInt(Integer::valueOf);

Um die Vor- und Nachteile dieser Methode kurz zusammenzufassen:

Persönlich gesehen verwenden 90% der Wettbewerbsprogramme Standardeingaben in Java. Kurz gesagt, es gibt viele Fälle, in denen Sie ein wenig schreiben und ein wenig verschieben möchten. In der Wettbewerbsprogrammierung ist es auch üblich, ein Eingabeformat wie "Die erste Zeile ist ein numerischer Wert und die zweite und nachfolgende Zeile sind Zeichenketten" zu verwenden. In solchen Fällen ist es erforderlich, verschiedene Arten von Eingaben schnell zu verarbeiten. In solchen Fällen finde ich den Scanner oft bequemer.

var stdin = new Scanner(System.in);

//Lesen Sie die Standardeingabe Zeile für Zeile.
while (stdin.hasNextLine()) {
    var line = stdin.nextLine();
    doSomething(line);
}

//Zum Beispiel, wenn Sie die folgende Eingabe haben---> 1000 10.005 HOGE
//Selbst solch eine komplizierte Eingabe ist relativ einfach zu verarbeiten.
int i = stdin.nextInt();
double d = stdin.nextDouble();
String s = stdin.nextLine();

//Es ist etwas schwierig, eine Verbindung zu Stream herzustellen. Um mapToObj usw. verwenden zu können, ist ein gewisser Einfallsreichtum erforderlich.
stdin.forEachRemaining(System.out::println);

Auch hier werde ich die Vor- und Nachteile zusammenfassen.


Auf diese Weise zu schreiben, scheint (natürlich) beide Vor- und Nachteile zu haben. Letzteres ist für ein wenig Programmieren auf Skriptebene einfacher, aber Ersteres ist definitiv moderner. Ersteres scheint in der praktischen Programmierung zu übernehmen (´ ・ ω ・ `)

Recommended Posts

Lesen Sie die Standardeingabe in Java
Lesen Sie JSON in Java
Lesen Sie Binärdateien in Java 1
Lesen Sie Binärdateien in Java 2
Sehr einfacher Eingangsempfang in Java
Lesen Sie die Java-Eigenschaftendatei in C #
Lesen Sie CSV in Java (Super CSV Annotation)
Geschichte von paiza.jp [Java Standard Input Solution]
Partisierung in Java
Änderungen in Java 11
[Java] Verwenden Sie kryptografische Technologie mit Standardbibliotheken
Janken in Java
Empfangen Sie Joystick-Eingaben in Java LW JFL
Java Standard Logger
Lesen Sie Felica mit RC-S380 (PaSoRi) in Java
Lesen Sie die xlsx-Datei in Java mit Selenium
Konsoleneingabe in Java (Verständnis des Mechanismus)
Umfangsrate in Java
FizzBuzz in Java
Ruby-Standardeingabe
Lesen Sie eine Zeichenfolge in einer PDF-Datei mit Java
Hinzufügen, Lesen und Löschen von Excel-Kommentaren mit Java
[Java] Dateien in src / main / resources lesen
Interpreter-Implementierung durch Java
Janken App in Java
Einschränkungsprogrammierung in Java
Setzen Sie Java8 in Centos7
NVL-artiger Typ in Java
Verbinden Sie Arrays in Java
"Hallo Welt" in Java
Java-Eigenschaftendatei lesen
Aufrufbare Schnittstelle in Java
Java-Standardfunktionstyp-Schnittstelle
Kommentare in der Java-Quelle
Formatieren Sie XML in Java
Einfache HTML-Spezialchars in Java
Boyer-Moore-Implementierung in Java
Lesen Sie die Java HashMap-Quelle
Hallo Welt in Java
Verwenden Sie OpenCV mit Java
WebApi-Memorandum mit Java
Typbestimmung in Java
Befehle in Java ausführen (Ping)
Verschiedene Threads in Java
Implementierung der Heap-Sortierung (in Java)
Zabbix API in Java
ASCII-Kunst in Java
Listen in Java vergleichen
POST JSON in Java
Fehler in Java ausdrücken
Erstellen Sie JSON in Java
Datumsmanipulation in Java 8
Was ist neu in Java 8?
Verwenden Sie PreparedStatement in Java
Was ist neu in Java 9,10,11
Parallele Ausführung in Java
Java Scanner Loop Eingang