Scanner类问题

时间:2012-06-19 11:51:42

标签: java groovy dsl java.util.scanner basic

我正在使用Groovy构建一个可以处理BASIC脚本的DSL。

我有这样一句话:

100 INPUT V

正则表达式将其注入正在执行的脚本中的一些代码:

    def retString = "scan = new Scanner(System.in);"
    retString += "${matcher[0][1]} ="
    retString += "scan.nextLine()\n"
    return retString

此代码已正确执行但永远不会返回(即扫描程序永远不会从nextLine()返回,因此不返回V / matcher [0] [1]的值,而是代码卡在等待键盘输入,无论如何我按下回车键的次数。)

我在这里投了什么错?输入在TextArea中被回显,因为它被输入(即这是当时的焦点) - 它与之相关吗?

2 个答案:

答案 0 :(得分:1)

我不知道这是问题中的拼写错误还是真正的错误,但你有:

retString + "${matcher[0][1]} ="

不应该是这个吗?

retString += "${matcher[0][1]} ="

但是,这可能不会影响你的回报。我猜测问题是文本区域的输入流不是System.in。您应该检查以查看正在使用的流,并在该流周围创建一个新的扫描程序而不是System.in。

答案 1 :(得分:0)

最后,这似乎是BASIC比Java或Groovy更具表现力的那些(罕见)领域之一 - 要解决这个问题,我必须改变窗口代码(添加JTextField以接受输入),编写一个ActionListener并实现一些锁存。与BASIC的1相比,并不是特别困难,但大约有25行代码。