以下は、Groovyをよく理解するために作成したサンプル・コードです。私はJavaについてよく理解しており、今この新しい言語を学びたいと考えています。この非常に単純なコードでJava IO例外が発生するのはなぜですか?
class Activity {
static void reverseString() {
def text
System.in.withReader{
println "Enter a string to be reversed:"
text = it.readLine()
}
print "\n";
for (int i = text.length() - 1; i >= 0; i--){
print text[i];
}
}
static void main(String[] args) {
def selection
System.in.withReader{
println "Select a project:"
println "1 - Reverse String"
selection = it.readLine()
}
switch (selection) {
case "1":
reverseString()
break
}
}
}
私はこのコードをコンパイルして実行することができます。私は '1'を入力してEnterを押すことができます。そして、私の方法からのプロンプトが表示されます。この時点で、私は逆に文字列を入力することが出来るのですが、私は入ることができる前に、私はIO例外を取得:「メイン」にjava.io.IOExceptionスレッドで
例外:ストリームは、Javaで
を閉じましたsun.nio.cs.StreamDecoder.readBytesでjava.io.BufferedInputStream.readで.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:170)
(BufferedInputStream.java:336)
(StreamDecoder.java :284)
sun.nio.cs.StreamDecoder.implReadに(StreamDecoder.java:326)sun.nio.cs.StreamDecoder.readで
(StreamDecoder.java:178)sun.nio.csで
java.io.InputStreamReader.readで.StreamDecoder.read0 sun.nio.cs.StreamDecoder.readで(StreamDecoder.java:127)
(StreamDecoder.java:112)
(InputStreamReader.java:168 )
at $ _reverseString_closure1.doCall(main.groovy:10)
Activity.mainで(main.groovy:39):Activity.reverseString(7 main.groovy)で
は、私はここで何をしないのですか?
"ストリームが閉じられました" - 例外が理由を示します。 – duffymo
ストリームが閉じているのはなぜですか? @duffymo –
それはあなたにも行番号を教えてくれます。これはあなたのデバッグスキルを発揮するチャンスです。あなたはIDEを持っていますか?ブレークポイントを設定し、ステップスルーします。もしあなたがいたらあなたはすでに答えを持っていただろう。 – duffymo