online - Consola Groovy leer entrada
groovy console (5)
Estoy empezando a aprender Groovy y estoy experimentando en GroovyConsole.
¿Hay alguna manera de que pueda leer la entrada del usuario? He intentado el siguiente código pero me sale un error.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)) print "Input:" input = br.readLine() println "You entered: $input"
Este es el error que estoy recibiendo:
Exception thrown 17-Apr-2012 02:52:39 org.codehaus.groovy.runtime.StackTraceUtils sanitize WARNING: Sanitizing stacktrace: java.io.IOException: Stream closed
¿Hay algo que necesito importar?
Cualquier ayuda sería genial.
Gracias
Llegué aquí tratando de encontrar la forma más fácil de leer los comentarios de los usuarios desde la línea de comandos ... Encontré la respuesta en elsewhere , publicaremos aquí para documentar la manera "real" de Groovy, ya que todavía falta:
def username = System.console().readLine ''What is your name?''
println "Hello $username"
Como dice Larry Battle, si usa la consola groovy, asegúrese de mirar la ventana ''negra'' de fondo para la salida y para escribir la entrada.
EDITAR
En un entorno donde la Console no esté disponible, como ejecutar desde su IDE, probablemente, use esto en su lugar:
println "What is your name?"
println "Your name is ${System.in.newReader().readLine()}"
Puedes probar algo como esto, que funciona en la línea de comandos de cualquier o / s, pero también en la GoovyConsole, donde aparece un cuadro de diálogo [como se señaló en una publicación anterior]:
def cons = System.console()
def yn
if (cons) {
yn = {((cons.readLine(it + " (y/n) ")?:"n").trim()?:"n")?.charAt(0).toLowerCase().toString() }
} else {
cons = javax.swing.JOptionPane.&showInputDialog
yn = {((cons(it + " (y/n) ")?:"n").trim()?:"n")?.charAt(0).toLowerCase().toString() }
}
if (yn("Did you want to do something?") == ''y'')
...do something here!...
Si su System.console () es nulo, puede
Scanner scan = new Scanner(System.in);
String s = scan.nextLine()
Tu código funciona.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
print "Input:"
def userInput = br.readLine()
println "You entered: $userInput"
Suponiendo que está en Windows, el único problema es que la entrada se está leyendo desde la consola en segundo plano que se inicia antes de groovyconsole.
def readln = javax.swing.JOptionPane.&showInputDialog
def username = readln ''What is your name?''
println "Hello $username."