我正在尝试从Spring Source Suite 2.7.1中的Groovy 1.7.10中的控制台读取多个输入(多个in.readLine()),但是控制台似乎只允许我输入第一个条目,放入第二个条目的空白移动让我输入第三个条目,为第四个条目输入空白等。以下是我正在使用的代码。
System.in.withReader {reader ->
print "w: "
def w = reader.readLine()
print "x: "
def x = reader.readLine()
print "y: "
def y = reader.readLine()
print "z: "
def z = reader.readLine()
}
我得到的输出如下。
w:1 x:y:2 z:
正如你所看到的,它让我进入第一行,为第二行输入空白,然后让我输入第三行,并为第四行输入空白。这与我输入输入时按“输入”有关吗?我想不会因为readLine()应该读取一行并检索文本但不包括回车符。任何帮助表示赞赏。
谢谢,
涓
答案 0 :(得分:0)
假设您使用的是Java 6+,您可以尝试使用Console
类来读取这些行吗?
def values = System.console().with {
[ 'w', 'x', 'y', 'z' ].inject( [:] ) { map, val ->
map << [ (val):readLine( "$val: " ) ]
}
}
println "Got w=$values.w x=$values.x y=$values.y z=$values.z"
不确定Console
是否在STS内部有效...
答案 1 :(得分:0)
我猜这是在Windows上...似乎有一个方法readLine(boolean ignoreLF)
,但它不可见,或者不起作用。我也遇到了这个问题。
现在,每次只需要额外拨打reader.readLine()
。