2012-04-17 28 views
17

我剛剛開始學習Groovy,並且正在GroovyConsole中進行實驗。Groovy Console讀取輸入

有沒有一種方法可以讀取用戶輸入?我已經嘗試了下面的代碼,但我得到一個錯誤。

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

何時發生此錯誤?你是如何開始「groovyConsole」的? – paislee 2012-04-17 02:09:49

+0

當我從GroovyConsole運行腳本時發生此錯誤。我剛剛以「Start GroovyConsole」快捷方式啓動GroovyConsole。 – James 2012-04-17 02:16:41

+0

我無法複製。嘗試從終端運行,例如'> groovyConsole'然後通過終端接收標準輸入。這可能對您有用http://groovy.329449.n5.nabble.com/Input-from-GroovyConsole-td342416.html。 – paislee 2012-04-17 02:24:52

回答

10

您的代碼有效。

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

假設你使用的是Windows,唯一的問題是輸入正從被groovyConsole中之前推出的背景控制檯讀取。 enter image description here

+0

這也適用於Linux :) – MariuszS 2013-12-31 20:29:06

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

這是非常酷和succint,你如何得到「確定/取消」值? Nevemind,明白了..如果你點擊取消,它將返回null。謝謝! – 2013-01-25 23:11:50

28

我來到這裏試圖找出在命令行讀取用戶輸入的最簡單的方法... 我找到了答案elsewhere,將張貼在這裏記錄的「真實」 Groovy的方式,因爲它是人仍下落不明:

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

拉里戰說,如果使用的是常規控制檯,一定要看看背景「黑」窗口輸出和輸入的輸入。

編輯

Console不可用,如從你的IDE運行的環境中,很可能改用此:

println "What is your name?" 
println "Your name is ${System.in.newReader().readLine()}" 
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!... 
+0

甜!還沒有嘗試過(即將..),但歡呼,如果它的工作! – 2015-12-04 15:14:06

2

如果您的System.console()爲空,您可以

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