我正在使用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]的值,而是无论输入多少次,代码都会停留在等待键盘输入的状态)我按Enter键。)

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

最佳答案

我不知道这是问题中的错字还是真正的错误,但是您有:

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


不是吗

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


但是,这可能不会影响您缺乏回报。我猜测问题是文本区域的输入流不是System.in。您应该检查查看正在使用什么流,并围绕该流而不是System.in创建新的扫描器。

关于java - 扫描仪类的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11100317/

10-10 19:26