Groovy Console read input

后端 未结 5 655
闹比i
闹比i 2021-02-01 05:27

I\'m just starting to learn Groovy and I am experimenting in GroovyConsole.

Is there a way I can read user input? I have tried the code below but I get an error.

相关标签:
5条回答
  • 2021-02-01 05:44
    def readln = javax.swing.JOptionPane.&showInputDialog
    def username = readln 'What is your name?'
    println "Hello $username."
    
    0 讨论(0)
  • 2021-02-01 05:44

    if your System.console() is null, you can

    Scanner scan = new Scanner(System.in);
    String s = scan.nextLine()
    
    0 讨论(0)
  • 2021-02-01 05:48

    You could try something like this, which works at the command-line of any o/s, but also in the GoovyConsole - where it pops up a dialog [as noted in a previous post]:

    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 讨论(0)
  • 2021-02-01 05:55

    I got here trying to find out the easiest way to read user input from the command line... I found the answer elsewhere, will post here to document the 'real' Groovy way as it's still missing:

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

    As Larry Battle says, if using the groovy console, make sure to look at the background 'black' window for the output and to type input.

    EDIT

    In an environment where Console is not available, such as running from your IDE, probably, use this instead:

    println "What is your name?"
    println "Your name is ${System.in.newReader().readLine()}"
    
    0 讨论(0)
  • 2021-02-01 06:04

    Your code works.

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

    Assuming you're on windows, the only problem is that the input is being read from the console in the background that is launched before groovyconsole. enter image description here

    0 讨论(0)
提交回复
热议问题