
こんにちは、tokopokoといいます。
■次のプログラムを実行すると、エラーになります。
なぜエラーになるのか、ご存知の方はいらっしゃいませんか。
import java.io.*;
class TestInput {
public static void main(String[] args) {
System.out.println("first = \"" + getInputValue("first?") + "\"");
System.out.println("second = \"" + getInputValue("second?") + "\"");
}
public static String getInputValue(String message) {
String returnString = "";
System.out.print(message);
BufferedReader input = null;
try {
input = new BufferedReader(new InputStreamReader(System.in));
returnString = input.readLine();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return returnString;
}
}
■実行例
D:\>javac TestInput.java
D:\>java TestInput
first?100
first = "100"
second?java.io.IOException: Stream closed
at java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:145
)
at java.io.BufferedInputStream.read(BufferedInputStream.java:308)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at java.io.BufferedReader.fill(BufferedReader.java:136)
at java.io.BufferedReader.readLine(BufferedReader.java:299)
at java.io.BufferedReader.readLine(BufferedReader.java:362)
at TestInput.getInputValue(TestInput.java:14)
at TestInput.main(TestInput.java:5)
second = ""
■私の環境は以下の通りです。
OS: Microsoft Windows XP Professional SP2
java: java version "1.6.0_03"
No.1ベストアンサー
- 回答日時:
メソッドの最初の呼び出しでSystem.inをclose()したので、それを再openしないかぎり次以降の呼び出しはIOExceptionになります。
われわれ一般のプログラマがSystem.inを再生成/再オープンすることはできないので、close()しないほうがいいですね。お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Javaでのエラーについて
-
リクエストパラメータを暗号化...
-
java と javax の違いは?
-
DBから全権検索したデータをjsp...
-
マイクラ1.7.10にcutallなどが...
-
vba クリップボードクリアにつ...
-
VBAの「for i=1 to cells(…」...
-
JSPファイルで生じるエラーをど...
-
IISワーカープロセスが原因でCP...
-
使用しているJUnitのバージョン...
-
超恥愚問ですが、CとC++の間に...
-
MSFormsとは何ですか?
-
JSP・サーブレットとphpどちら...
-
unzip32.dllの利用について(64b...
-
Pure Javaとは?
-
JavaとAndroidアプリ(Java)違...
-
C言語を学ぶにあたっての数学の...
-
データベースのデータをTextBox...
-
Eclipseソース開発画面の行番号...
-
初心者 ASP.NETの勉強について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javaでのエラーについて
-
javaからデータベースに接続 エ...
-
struts2環境構築で不具合が出て...
-
java と javax の違いは?
-
Fileクラス
-
Javaにてシリアル通信を行って...
-
Tomcatでエラー
-
クラスパスがとおりません。
-
DBから全権検索したデータをjsp...
-
FirefoxでJava Appletが表示で...
-
oracle9iにJDBC接続が出来ない
-
WebAPIをJavaScriptで利用できる?
-
これをjavaとGUIを使って作りた...
-
javaアプレットでゲームを作り...
-
アプレットとテキストファイル
-
JSFで、マネージビーンに画面の...
-
JNIでロードするライブラリが見...
-
CPUの個数
-
一斉コンパイルのバッチファイ...
-
execでdirコマンドを実行すると...
おすすめ情報