Javaの勉強をしています。
以下のサンプルプログラムの動きが予想と違う結果になり、理由がわからず躓いてしまいました。
サンプルプログラム
import java.io.IOException; public class Sample { public static void main(String[] args) { try { System.out.println("文字を入力して[Enter]キーを押してください"); System.out.println("[Ctrl] + Zでプログラムが終了します"); int b; while((b = System.in.read()) != -1) { // 1バイト読み込む System.out.write(b);// 標準出力に1バイト出力 } System.out.println(); // 標準出力に改行を出力 }catch(IOException e) { System.err.println(e); // 例外メッセージを出力 System.exit(1); } } }
実行結果
java Sample
文字を入力して[Enter]キーを押してください
[Ctrl] + Zでプログラムが終了します
abc (キーボードから入力した値)
abc (出力された値)
動作説明
abc(Enter)と入力すると、abcと表示されます。
System.in.read()は1バイト読み込んで、System.out.write(b)で1バイト出力するので
aと入力したら、すぐa が出力されるような気がするのですが、実際はEnterが押されるまでは出力されないことが何故だろう?と疑問に思っています。
ご教授いただけると大変ありがたいです。宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー