2016-12-15 72 views
1

整個字符串讀取輸入我做了以下內容:如何從標準輸入輸出中的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中。

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

這段代碼沒有退出循環。=( –

相關問題