Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 使用sbt运行或sbt控制台时BufferedReader.readLine出现问题_Scala_Io_Sbt_Read Eval Print Loop - Fatal编程技术网

Scala 使用sbt运行或sbt控制台时BufferedReader.readLine出现问题

Scala 使用sbt运行或sbt控制台时BufferedReader.readLine出现问题,scala,io,sbt,read-eval-print-loop,Scala,Io,Sbt,Read Eval Print Loop,我的问题很快,我正在使用一个小控制台来读取输入,然后调用适当的代码。我使用的是sbt,我遇到了一个问题,当我在sbt运行程序后,在sbt控制台内,甚至在普通的scala解释器中尝试读取输入时 提示看起来只是挂起,但如果我点击return,它实际上会在中读取输入。尽管shell的缓冲区仍然为空。这是我一直在尝试的通用代码,它给了我这个问题 import java.io._ val s = new BufferedReader(new InputStreamReader(System.in))

我的问题很快,我正在使用一个小控制台来读取输入,然后调用适当的代码。我使用的是sbt,我遇到了一个问题,当我在sbt运行程序后,在sbt控制台内,甚至在普通的scala解释器中尝试读取输入时

提示看起来只是挂起,但如果我点击return,它实际上会在中读取输入。尽管shell的缓冲区仍然为空。这是我一直在尝试的通用代码,它给了我这个问题

import java.io._

val s = new BufferedReader(new InputStreamReader(System.in)) 

val line = s.readLine

println(line)

有人知道这是为什么吗?如果有,有办法解决吗?我希望能够看到当我从sbt运行程序时输入的内容。如果在shell中看不到我的输入,那么我的项目的测试和开发就不那么愉快了。

这确实是一个Java API问题,尽管是在Scala中。BufferedReader.readLine()将使用您从System.in键入的所有字符,直到它有一整行,此时它将返回您所说的行

在Java中,使用原始Java.io类很难进行控制台输入。在Java6之前,我已经看到了一些混乱的解决方案,但幸运的是,在该版本中引入了一个新类,使其更容易实现:。我想这就变得很简单了

val line = System.console.readLine

println(line)

当我尝试从sbt中运行代码时,会出现空指针异常。具体而言,
控制台
为空。