Groovy的控制台读取输入(Groovy Console read input)

2019-07-29 00:17发布

我刚开始学习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

有什么我需要进口?

任何帮助将是巨大的。

谢谢

Answer 1:

我来到这里试图找出读取命令行用户输入的最简单的方法......我找到了答案其他地方 ,将张贴在这里记录,因为它仍然缺少“真正的” Groovy的方式:

def username = System.console().readLine 'What is your name?'
println "Hello $username"

正如拉里·巴特尔说,如果使用的是常规控制台,一定要看看背景“黑”的输出窗口,键入输入。

编辑

在环境控制台不可用,如从你的IDE中运行,很可能,改用这样的:

println "What is your name?"
println "Your name is ${System.in.newReader().readLine()}"


Answer 2:

def readln = javax.swing.JOptionPane.&showInputDialog
def username = readln 'What is your name?'
println "Hello $username."


Answer 3:

您的代码工作。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
print "Input:"
def userInput = br.readLine()
println "You entered: $userInput"

假设你使用的是Windows,唯一的问题是输入正从被groovyConsole中之前推出的背景控制台读取。



Answer 4:

你可以尝试这样的事情,这在命令行工作的任何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!...


Answer 5:

如果您System.console()为空,你可以

Scanner scan = new Scanner(System.in);
String s = scan.nextLine()


文章来源: Groovy Console read input