Je commence tout juste à apprendre Groovy et j'expérimente dans GroovyConsole.
Existe-t-il un moyen de lire les entrées utilisateur? J'ai essayé le code ci-dessous mais j'obtiens une erreur.
BufferedReader br = new BufferedReader (new InputStreamReader (System.in)) Print "Input:" Input = br.readLine () println "Vous avez entré: $ entrée"
Voici l'erreur que je reçois:
Exception levée 17-Apr-2012 02:52:39 org.codehaus.groovy.runtime.StackTraceUtils sanitize AVERTISSEMENT: Sanitizing stacktrace: Java.io.IOException: flux fermé
Y a-t-il quelque chose que je dois importer?
Toute aide est la bienvenue.
Merci
Je suis arrivé ici en essayant de trouver le moyen le plus simple de lire les entrées utilisateur à partir de la ligne de commande ... J'ai trouvé la réponse ailleurs , je posterai ici pour documenter la `` vraie '' façon Groovy car il manque toujours:
def username = System.console().readLine 'What is your name?'
println "Hello $username"
Comme le dit Larry Battle, si vous utilisez la console groovy, assurez-vous de regarder la fenêtre `` noire '' d'arrière-plan pour la sortie et de saisir l'entrée.
[~ # ~] modifier [~ # ~]
Dans un environnement où la console n'est pas disponible, telle que l'exécution depuis votre IDE, utilisez probablement ceci à la place:
println "What is your name?"
println "Your name is ${System.in.newReader().readLine()}"
def readln = javax.swing.JOptionPane.&showInputDialog
def username = readln 'What is your name?'
println "Hello $username."
Votre code fonctionne.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
print "Input:"
def userInput = br.readLine()
println "You entered: $userInput"
En supposant que vous êtes sur Windows, le seul problème est que l'entrée est lue à partir de la console en arrière-plan qui est lancée avant groovyconsole.
Vous pouvez essayer quelque chose comme ça, qui fonctionne sur la ligne de commande de tout o/s, mais aussi dans la GoovyConsole - où il apparaît une boîte de dialogue [comme indiqué dans un post précédent]:
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 votre System.console () est null, vous pouvez
Scanner scan = new Scanner(System.in);
String s = scan.nextLine()