我正在使用 Groovy 构建一个可以处理 BASIC 脚本的 DSL。
我有这样一行:
100 INPUT V
由正则表达式获取,该正则表达式将一些代码注入(inject)正在执行的脚本中:
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 - Scanner 类的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11100317/