2016-12-15 11 views
1
に、文字列全体としてはstdioから

を入力を読み取るために、私は次のようでした:どのようにJavaの

1)BufferedReaderを作成。

2)リードstdioからラインごととはStringBuilder

br = new BufferedReader(new InputStreamReader(System.in)); 

StringBuilder everything = new StringBuilder(); 
String line; 

while((line = br.readLine()) != null) { 
    everything.append(line); 
} 
System.out.println(everything.toString()); 

にそれを追加しかし、私はループを終了することはできません。 例えば、そのような入力を渡してENTERを押すと、私はまだループしています。

aut Caesar aut nihil 
aut aut 
de mortuis aut bene aut nihil 

どうすればこの問題を解決できますか?または、別の方法をstdioから読み込む必要がありますか?

+0

'もう一方の端に一部のコンテンツが生成されて送信される可能性があるので、アプリケーションは、あなたが呼んでいるそれのためにそれぞれの時間を待つ必要があるのでstdin'は、ストリームをオープンしている'のreadLine() '。これを解決するには、いくつかの停止シーケンスを使用してループを終了する必要があるかどうかを判断できます。このようなシーケンスは、 'end'、' stop'、まったく単語がないかもしれません。ただ空の行です。したがって、あなたのソリューションは 'while(line = br.readLine())!= null &&!line.equals(" stop ")){...}' – Pshemo

+0

あなたは 'EOF'を生成することができます。 「」を押してください。プログラムを実行するために使用しているコンソールに完全に依存します。 – AJNeufeld

+0

なぜユーザー入力を読み取るためにScannerクラスを使用していないのですか?このアプローチよりもずっと簡単です。 –

答えて

-1

このコードはScannerクラスのサンプルの一例です。ユーザーからString入力を読み込んでStringに格納するだけです。

Scanner sc=new Scanner(System.in); 
    System.out.println("enter data"); 

    while(sc.hasNextLine()) 
    { 
     String str=sc.nextLine(); 
     System.out.println(str); 
    } 
+0

私が質問した文字列を渡すと、最初の文字列だけが出力されます。 =(しかし、すべての文字列が印刷されます。 –

+0

私はコードを編集しましたが、それが機能するかどうかを確認していますか? –

+0

このコードはループを終了しません= –