0

我正在尝试从 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() 应该读取一行并检索文本,但不包括回车符。任何帮助表示赞赏。

谢谢,

胡安

4

2 回答 2

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 内工作...

于 2011-09-29T08:06:49.910 回答
0

我猜这是在 Windows 上......似乎有一个方法readLine(boolean ignoreLF),但它不可见,或者不起作用。我也遇到了这个问题。

reader.readLine()现在,每次只运行一个额外的调用。

于 2013-02-12T17:26:16.900 回答