Estoy tratando de usar la clase de consola para obtener información del usuario, pero cuando llamo, se devuelve un objeto nulo System.console()
. ¿Tengo que cambiar algo antes de usar System.console?
Console co=System.console();
System.out.println(co);
try{
String s=co.readLine();
}
Respuestas:
Uso de la consola para leer la entrada (solo se puede usar fuera de un IDE):
Otra forma (funciona en todas partes):
System.console () devuelve nulo en un IDE.
Entonces, si realmente necesita usar
System.console()
, lea esta solución de McDowell .fuente
readLine()
que no existeInputStreamReader
.fuente
nextLine()
es muy complicado trabajar con él. En el mejor de los casos, le dará dolor de cabeza cuando intente obtener líneas completas de la consola.in.nextLine()
crearía problemas?java.util.NoSuchElementException
que no entiendo bien.Hay pocas formas de leer la cadena de entrada desde su consola / teclado. El siguiente código de muestra muestra cómo leer una cadena desde la consola / teclado utilizando Java.
La última parte del código utilizado
java.io.Console
clase. no puede obtener la instancia de la ConsolaSystem.console()
cuando ejecuta el código de demostración a través de Eclipse. Porque eclipse ejecuta su aplicación como un proceso en segundo plano y no como un proceso de nivel superior con una consola del sistema.fuente
Dependerá de su entorno. Si está ejecutando una interfaz de usuario Swing a través de,
javaw
por ejemplo, entonces no hay una consola para mostrar. Si está ejecutando dentro de un IDE, dependerá en gran medida del manejo específico de IDE de la consola IO.Sin embargo, desde la línea de comando, debería estar bien. Muestra:
Ejecute esto solo con
java
:Otra opción es usar
System.in
, que quizás desee ajustar en una líneaBufferedReader
de lectura, o usarScanner
(nuevamente ajustarSystem.in
).fuente
Encontré una buena respuesta aquí con respecto a la lectura desde la consola, aquí otra forma de usar 'Scanner' para leer desde la consola:
fuente
close()
al escáner en este caso, porque cerrará System.in y evitará que su aplicación lea más tarde. (Leer más tarde arroja el error "no se encontró línea")Prueba esto. Espero que esto ayude.
fuente
Lo siguiente toma la respuesta de athspk y la convierte en una que se repite continuamente hasta que el usuario escribe "salir". También escribí una respuesta de seguimiento donde tomé este código y lo hice comprobable.
Salida de ejemplo:
fuente
Escribí la biblioteca Text-IO , que puede solucionar el problema de que System.console () sea nulo cuando se ejecuta una aplicación desde un IDE.
Introduce una capa de abstracción similar a la propuesta por McDowell . Si System.console () devuelve nulo, la biblioteca cambia a una consola basada en Swing.
Además, Text-IO tiene una serie de características útiles:
Ejemplo de uso:
En esta imagen , puede ver el código anterior ejecutándose en una consola basada en Swing.
fuente
Use System.in
http://www.java-tips.org/java-se-tips/java.util/how-to-read-input-from-console.html
fuente