2012-03-13 11 views
6

私の質問は簡単です。入力を読み込んだ後、適切なコードを呼び出すために、小さなコンソールで作業しています。私はsbtを使用していますが、sbtを実行してプログラムを実行した後、sbtコンソールの中で、あるいは普通の古いscalaインタプリタでも入力を読み込もうとするときに問題が発生しました。sbt実行またはsbtコンソールを使用するBufferedReader.readLineでの問題

プロンプトがハングアップしているように見えますが、リターンすると実際には入力が読み込まれます。シェルのバッファは空のままですが、ここで私が試してきた一般的なコードは、私に問題を与えている。

import java.io._ 

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

val line = s.readLine 

println(line) 

なぜこれが問題なのか、誰かがこれを解決する方法はあるのでしょうか?私はsbtから自分のプログラムを実行するときに私が何を入力するのかを見ることができるのが大好きです。シェルの入力を見ることなく、プロジェクトのテストと開発を楽しくできなくなります。

答えて

-1

これは実際にはJava APIに関する質問ですが、Scalaでもそうです。 BufferedReader.readLine()は、System.inから入力したすべての文字を、それが行全体を持つまで使用します。

Javaのコンソール入力は、元のjava.ioクラスでは困難でした。 Java6より前には、これに厄介な解決策がいくつか見受けられましたが、幸いなことに、このリリースではもっと簡単に新しいクラスが導入されました:java.io.Console私はそれが次のように簡単になると思う

val line = System.console.readLine 

println(line) 
+1

私はsbtからあなたのコードを実行しようとすると、nullポインタ例外が発生します。具体的には、 'console'はnullです。 – dsg

関連する問題