2012-04-17 14 views
17

मैं अभी ग्रोवी सीखना शुरू कर रहा हूं और मैं ग्रोवी कंसोल में प्रयोग कर रहा हूं।ग्रोवी कंसोल इनपुट पढ़ें

क्या कोई तरीका है कि मैं उपयोगकर्ता इनपुट पढ़ सकता हूं? मैंने नीचे दिए गए कोड की कोशिश की है लेकिन मुझे एक त्रुटि मिलती है।

Exception thrown 
17-Apr-2012 02:52:39 org.codehaus.groovy.runtime.StackTraceUtils sanitize 

WARNING: Sanitizing stacktrace: 

java.io.IOException: Stream closed

क्या मैं आयात करने की आवश्यकता है:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)) 

print "Input:" 

input = br.readLine() 

println "You entered: $input"

यह त्रुटि मैं प्राप्त कर रहा है?

कोई भी मदद महान होगी।

धन्यवाद

+0

यह त्रुटि कब होती है? आपने 'groovyConsole' कैसे शुरू किया? – paislee

+0

यह त्रुटि तब होती है जब मैं ग्रोवी कंसोल से स्क्रिप्ट चलाता हूं। मैंने अभी 'ग्रोवी कंसोल' शॉर्टकट के साथ ग्रोवी कंसोल शुरू किया। – James

+0

मैं पुन: उत्पन्न नहीं कर सकता। टर्मिनल से चलने का प्रयास करें, उदा। '> groovyConsole' तो मानक इनपुट टर्मिनल के माध्यम से प्राप्त किया जाता है। यह आपके लिए उपयोग की जा सकती है http://groovy.329449.n5.nabble.com/Input-from-GroovyConsole-td342416.html। – paislee

उत्तर

10

आपका कोड काम करता है।

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

मान लिया जाये कि आप खिड़कियों पर कर रहे हैं, केवल समस्या यह है कि इनपुट कि groovyconsole से पहले शुरू की है पृष्ठभूमि में कंसोल से पढ़ा जा रहा है है। enter image description here

+0

यह लिनक्स पर भी काम करता है :) – MariuszS

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

यह बहुत अच्छा और शानदार है, आपको "ठीक/रद्द करें" मूल्य कैसे मिलता है? Nevemind, समझ गया .. अगर आप रद्द मारा तो यह शून्य हो जाता है। धन्यवाद! –

28

मैं यहाँ सबसे आसान तरीका है कमांड लाइन से उपयोगकर्ता इनपुट को पढ़ने के लिए बाहर खोजने की कोशिश कर मिल गया ... मैं जवाब elsewhere पाया, यह के रूप में 'असली' ग्रूवी तरह से दस्तावेज़ के लिए यहाँ पोस्ट करेंगे अभी भी लापता:

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

लैरी लड़ाई कहते हैं, अगर ग्रूवी कंसोल का उपयोग, पृष्ठभूमि उत्पादन के लिए 'काली' खिड़की को देखने के लिए सुनिश्चित करें और इनपुट टाइप करने के लिए।

संपादित

ऐसा माहौल Console जैसे आपका आईडीई से चल के रूप में उपलब्ध नहीं है, में, शायद, तब इस का उपयोग करें:

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

आप कुछ इस तरह है, जिस पर काम करता है की कोशिश कर सकते के आदेश-पंक्ति किसी भी ओ/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

मीठा !! इसे आजमाया नहीं है (लगभग ..) लेकिन अगर यह काम करता है तो चीयर्स! –

2

यदि आपका System.console() शून्य है, तो आप

Scanner scan = new Scanner(System.in); 
String s = scan.nextLine() 
संबंधित मुद्दे