Ich versuche, die Konsolenklasse zu verwenden, um Eingaben vom Benutzer zu erhalten, aber beim Aufruf wird ein Nullobjekt zurückgegeben System.console()
. Muss ich etwas ändern, bevor ich System.console verwende?
Console co=System.console();
System.out.println(co);
try{
String s=co.readLine();
}
Antworten:
Verwenden der Konsole zum Lesen von Eingaben (nur außerhalb einer IDE verwendbar):
Ein anderer Weg (funktioniert überall):
System.console () gibt in einer IDE null zurück.
Wenn Sie es also wirklich brauchen
System.console()
, lesen Sie diese Lösung von McDowell .quelle
readLine()
die es keine gibtInputStreamReader
.quelle
nextLine()
ist jedoch sehr chaotisch, damit zu arbeiten. Bestenfalls bereitet es Ihnen Kopfschmerzen, wenn Sie versuchen, ganze Zeilen von der Konsole zu holen.in.nextLine()
Probleme entstehen würden?java.util.NoSuchElementException
, die ich nicht ganz verstehe.Es gibt nur wenige Möglichkeiten, Eingabezeichenfolgen von Ihrer Konsole / Tastatur zu lesen. Der folgende Beispielcode zeigt, wie Sie mit Java eine Zeichenfolge von der Konsole / Tastatur lesen.
Der letzte Teil des Codes verwendete
java.io.Console
Klasse. Sie können keine Konsoleninstanz abrufen,System.console()
wenn Sie den Demo-Code über Eclipse ausführen. Weil eclipse Ihre Anwendung als Hintergrundprozess und nicht als Prozess der obersten Ebene mit einer Systemkonsole ausführt.quelle
Es wird von Ihrer Umgebung abhängen. Wenn Sie
javaw
beispielsweise eine Swing-Benutzeroberfläche ausführen , ist keine Konsole zum Anzeigen vorhanden. Wenn Sie innerhalb einer IDE ausgeführt werden, hängt dies stark von der Handhabung der Konsolen-E / A durch die jeweilige IDE ab.Über die Befehlszeile sollte es jedoch in Ordnung sein. Stichprobe:
Führen Sie dies nur mit
java
:Eine andere Option ist die Verwendung
System.in
, die Sie möglicherweise inBufferedReader
Zeilen zum Lesen einfügen oder verwenden möchtenScanner
(erneut umbrechenSystem.in
).quelle
Hier finden Sie eine gute Antwort zum Lesen von der Konsole. Hier können Sie auf andere Weise mit 'Scanner' von der Konsole lesen:
quelle
close()
In diesem Fall möchten Sie den Scanner möglicherweise nicht aufrufen , da er System.in schließt und Ihre Anwendung später daran hindert, daraus zu lesen. (Lesen später wirft Fehler "keine Zeile gefunden")Versuche dies. hoffe das wird helfen.
quelle
Das Folgende nimmt die Antwort von athspk und macht sie zu einer Antwort , die sich kontinuierlich wiederholt , bis der Benutzer "exit" eingibt . Ich habe auch eine Antwort geschrieben, in der ich diesen Code genommen und testbar gemacht habe.
Beispielausgabe:
quelle
Ich habe die Text-IO- Bibliothek geschrieben, die das Problem lösen kann, dass System.console () null ist, wenn eine Anwendung in einer IDE ausgeführt wird.
Es wird eine Abstraktionsschicht eingeführt, die der von McDowell vorgeschlagenen ähnelt . Wenn System.console () null zurückgibt, wechselt die Bibliothek zu einer Swing-basierten Konsole.
Darüber hinaus bietet Text-IO eine Reihe nützlicher Funktionen:
Anwendungsbeispiel:
In diesem Bild sehen Sie den obigen Code, der in einer Swing-basierten Konsole ausgeführt wird.
quelle
Verwenden Sie System.in
http://www.java-tips.org/java-se-tips/java.util/how-to-read-input-from-console.html
quelle