我刚开始学习Groovy,我正在GroovyConsole中进行实验。
有没有办法可以阅读用户输入?我已经尝试过下面的代码,但是我收到了错误。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)) print "Input:" input = br.readLine() println "You entered: $input"
这是我收到的错误:
Exception thrown 17-Apr-2012 02:52:39 org.codehaus.groovy.runtime.StackTraceUtils sanitize WARNING: Sanitizing stacktrace: java.io.IOException: Stream closed
我需要导入什么吗?
任何帮助都会很棒。
由于
答案 0 :(得分:33)
我到这里试图找出从命令行读取用户输入的最简单方法... 我找到了答案elsewhere,将在此处发布以记录“真正的”Groovy方式,因为它仍然缺失:
def username = System.console().readLine 'What is your name?'
println "Hello $username"
正如Larry Battle所说,如果使用groovy控制台,请务必查看输出的背景“黑色”窗口并输入输入。
修改强>
在Console不可用的环境中,例如从IDE运行,可能请改用:
println "What is your name?"
println "Your name is ${System.in.newReader().readLine()}"
答案 1 :(得分:22)
def readln = javax.swing.JOptionPane.&showInputDialog
def username = readln 'What is your name?'
println "Hello $username."
答案 2 :(得分:11)
您的代码有效。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
print "Input:"
def userInput = br.readLine()
println "You entered: $userInput"
假设你在Windows上,唯一的问题是在groovyconsole之前启动的后台控制台正在读取输入。
答案 3 :(得分:3)
你可以试试这样的东西,它可以在任何o / s的命令行上运行,也可以在GoovyConsole中运行 - 它会弹出一个对话框[如前一篇文章所述]:
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!...
答案 4 :(得分:2)
如果您的System.console()为null,则可以
Scanner scan = new Scanner(System.in);
String s = scan.nextLine()