Подтвердить что ты не робот

Groovy Вход для чтения консоли

Я только начинаю изучать 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

Есть ли что-нибудь, что мне нужно импортировать?

Любая помощь будет большой.

Спасибо

4b9b3361

Ответ 1

Я попытался найти самый простой способ прочитать ввод данных из командной строки... Я нашел ответ в другом месте, разместит здесь, чтобы документировать "реальный" Groovy способ, поскольку он все еще отсутствует:

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

Как говорит Ларри Блэйт, если вы используете консоль Groovy, обязательно посмотрите на фоновое "черное" окно для вывода и введите ввод.

ИЗМЕНИТЬ

В среде, где Console недоступен, например, запуск из вашей среды IDE, возможно, используйте это вместо:

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

Ответ 2

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

Ответ 3

Ваш код работает.

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

Предполагая, что вы работаете в Windows, единственная проблема заключается в том, что ввод считывается с консоли в фоновом режиме, который запускается перед groovyconsole. enter image description here

Ответ 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!...

Ответ 5

если ваш System.console() имеет значение null, вы можете

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