2013-10-05 93 views
3

我使用的BufferedReader如下,如何在Java中讀取不以換行符或回車符結束的行?

BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); 
for (int i = 0; i < 4; i++) { 
    System.out.println(stdin.readLine()); 
} 

而給出的輸入有:

1 
2 
3 

最後輸入的不與\n\r結束,因此爲3的readLine()將期望用戶輸入,除非用戶按下輸入鍵

任何使用掃描儀的解決方案?

其實,我有這個問題,同時解決,Quora Question Nearby,在他們conditions,他們都提到以下行,

是否在輸入測試用例的最後一行以換行符結束? [鏈接]

沒有。沒有尾隨空格或換行符。


Link for Code,在上述頁面提交,測試用例執行失敗

測試零的情況下,它顯示下面的輸出, enter image description here 因爲,預期產出是空白,這意味着我的代碼仍預計\n or \r這不是由輸入提供的

+0

輸入是否都是整數? –

+0

請檢查更新後的問題 – Pradeep

+0

沒有行終止符的行是矛盾的。 – EJP

回答

7

如果輸入被終止 - 例如,如果標準輸入實際上是從文件重定向的話,情況就是這樣 - 例如 - 那就沒問題。當BufferedReader.readLine檢測到底層數據的結尾時,仍然會從其輸入中返回最後一行。

鑑於這是一個自動化的挑戰,我會預計這是事實 - 我希望它像

java Solution < input.txt 

所以基本上運行的東西,我相信你應該罰款。

+1

啊所以'readLine()'返回\ n,\ r或EOF ?然後,Javadocs在最後一部分非常不清楚。另外他們提到「如果流已經到達終點,則爲null」......我認爲這有點不真實。 –

+1

究竟..他實際上得到的用戶輸入不是文件.. :) – Anirudha

+0

不工作,只是更新了代碼鏈接的問題,如果可能的話,請檢查 – Pradeep

1

如果你想在沒有按回車的情況下獲得輸出,那是不可能的。 由於System.in流不允許您輸入默認情況下未按下輸入。您必須使用像JNI這樣的第三方庫。

+0

我不能使用第三方,檢查提供的鏈接,在Java中,他們只希望解決方案類,沒有第三方,因爲它在測試服務器上運行 – Pradeep

相關問題