我正在使用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/