J'essaie d'utiliser la classe Console pour obtenir l'entrée de l'utilisateur mais un objet nul est renvoyé lorsque j'appelle System.console()
. Dois-je modifier quelque chose avant d'utiliser System.console?
Console co=System.console();
System.out.println(co);
try{
String s=co.readLine();
}
Réponses:
Utilisation de la console pour lire l'entrée (utilisable uniquement en dehors d'un IDE):
Une autre façon (fonctionne partout):
System.console () renvoie null dans un IDE.
Donc, si vous avez vraiment besoin d'utiliser
System.console()
, lisez cette solution de McDowell .la source
readLine()
qui n'existe pas pourInputStreamReader
.la source
nextLine()
est très compliqué de travailler avec. Au mieux, cela vous donnera mal à la tête lorsque vous essayez d'obtenir des lignes entières de la console.in.nextLine()
créerait des problèmes?java.util.NoSuchElementException
que je ne comprends pas très bien.Il existe plusieurs façons de lire la chaîne d'entrée depuis votre console / clavier. L'exemple de code suivant montre comment lire une chaîne à partir de la console / du clavier à l'aide de Java.
La dernière partie du code utilisée
java.io.Console
classe. vous ne pouvez pas obtenir d'instance de consoleSystem.console()
lors de l'exécution du code de démonstration via Eclipse. Parce qu'eclipse exécute votre application en tant que processus d'arrière-plan et non en tant que processus de niveau supérieur avec une console système.la source
Cela dépendra de votre environnement. Si vous exécutez une interface utilisateur Swing via,
javaw
par exemple, il n'y a pas de console à afficher. Si vous exécutez dans un IDE, cela dépendra beaucoup de la gestion spécifique de l'EDI des E / S de la console.À partir de la ligne de commande, cela devrait bien se passer. Échantillon:
Exécutez ceci simplement avec
java
:Une autre option consiste à utiliser
System.in
, que vous voudrez peut-être envelopper dans unBufferedReader
pour lire les lignes, ou utiliserScanner
(encore une foisSystem.in
).la source
J'ai trouvé une bonne réponse ici concernant la lecture depuis la console, voici une autre façon d'utiliser 'Scanner' pour lire depuis la console:
la source
close()
le scanner dans ce cas, car il fermera System.in et empêchera votre application de le lire plus tard. (La lecture plus tard génère l'erreur "aucune ligne trouvée")Essaye ça. espérons que cela aidera.
la source
Ce qui suit prend la réponse d'athspk et en fait une qui boucle continuellement jusqu'à ce que l'utilisateur tape "exit". J'ai également écrit une réponse de suivi dans laquelle j'ai pris ce code et l'ai rendu testable.
Exemple de sortie:
la source
J'ai écrit la bibliothèque Text-IO , qui peut gérer le problème de la nullité de System.console () lors de l'exécution d'une application à partir d'un IDE.
Il introduit une couche d'abstraction similaire à celle proposée par McDowell . Si System.console () renvoie null, la bibliothèque bascule vers une console basée sur Swing.
De plus, Text-IO possède une série de fonctionnalités utiles:
Exemple d'utilisation:
Dans cette image, vous pouvez voir le code ci-dessus s'exécuter dans une console basée sur Swing.
la source
Utilisez System.in
http://www.java-tips.org/java-se-tips/java.util/how-to-read-input-from-console.html
la source