Scala,用户输入直到只有换行符

时间:2017-03-04 21:31:58

标签: scala

我尝试获取多个用户输入以在Scala IDE中打印它们。

我试过这段代码

println(scala.io.StdIn.readLine())

可以工作,因为IDE接受我的输入然后在行中打印它,但这仅适用于单个输入。 我希望代码能够输入多个输入,直到只输入换行符。例如,

1
2
3

所以我决定我们需要一个输入的迭代器,这导致我分别尝试以下两行代码

var in = Iterator.continually{ scala.io.StdIn.readLine() }.takeWhile { x => x != null}

var in = io.Source.stdin.getLines().takeWhile { x => x != null}

不幸的是,由于IDE根本没有接受我的输入,所以它们都不起作用。

1 个答案:

答案 0 :(得分:3)

你真的很亲密。

val in = Iterator.continually(io.StdIn.readLine).takeWhile(_.nonEmpty).toList

这将读取输入,直到输入空字符串并将输入保存在List[String]中。 toList的原因是因为Iterator元素在调用next之前不会变为现实,因此在需要下一个元素之前不会调用readLine 。转换为List会创建Iterator的所有元素。

<强>更新

正如@ vossad01指出的那样,这可以使意外输入更安全。

val in = Iterator.continually(io.StdIn.readLine)
                 .takeWhile(Option(_).fold(false)(_.nonEmpty))
                 .toList