2017-01-03 27 views
-1

私は自分のプログラムに、特にStandart入力に問題があります。私も印刷されますが、ここで私が入力標準入力が積み重なってしまいます

としてのEclipseコンソールに「こんにちは」を書いたとき、私が得るものであることになる「ループが終了している間、」後の入力は、ラインを印刷されていることを期待しているだろう

BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); 
    int in; 
    while ((in = input.read()) != -1) { 
     System.out.println(((char) in)); 
     System.out.println("going throught while loop"); 
    } 
    System.out.println("while loop ended"); 
    input.close(); 

hi 
h 
going throught while loop 
i 
going throught while loop 
going throught while loop 
going throught while loop 

を............................... .......... ...............

プログラムがまだ実行中で、別の入力を待っているので、残りのコードとwhileループは実行されないので、一度入力するだけで何らかの単語を入力してからコードをループ中に残す方法を尋ねています。言い換えれば、「while loop ended」という行は印刷されます。

ありがとうございました。

+0

read()メソッド - 単一の文字を読み取ります。したがって、すべての文字ループが実行されると、入力文字が!= -1になるまで続きます。 – SujitKumar

+0

入力を終端するために何をしましたか? DOSの場合は^ Z、Unixの場合は^ D –

答えて

1

ASCIIによれば、バッファーは104(h)105(i)と10(LF)と13(CR)です。つまり、「hi」と行終端記号と次の行を読んでいます。次の構造に変更することができます:

while ((in = input.read()) != -1 && in != 13 && in != 10) 

私は、あなたのsysoutを変更してint値を出力するときに見ました。あなたがBufferedReaderを使用しているので

Scanner input = new Scanner(System.in); 
String text = input.nextLine(); 
for(char ch: text.toCharArray()){ 
    System.out.println(ch); 
    System.out.printf("going throught while loop \n"); 
} 
System.out.println("while loop ended"); 
input.close(); 
+0

です。最初の入力後にwhileループを終了してコードを続けるプログラムが必要です。 – Fredegar

+0

@Fredegar、私の編集を見てください。できます。 scannerを使用するようにコードを変更してください。すべての行を読み込み、すべての文字列を一度に取得してください。 – BrunoDM

1

、あなただけの行にユーザーを得るために、そのreadLineメソッドを呼び出すことができます:あなたはすべての行を読み込み、文字列の各文字を印刷できる場合は

は、次のように行います入力されました。 1行だけが必要な場合は、ループは必要ありません。

もう1つのオプションはjava.util.Scannerです。

どちらかを問わず、使用するためのチュートリアルとコード例がたくさんあります。

関連する問題