我一直有很多麻煩,試圖讓掃描儀或緩衝讀取器嘗試和檢測一個空行。例如,如果我有一個包含文件:Java掃描儀檢測空行?
there
cat
dog
(BLANK LINE)
如果我這樣做:
while(scan.hasNextLine())
{
String line = scan.nextLine();
...
...
}
掃描儀不拿起空行。我也嘗試使用緩衝讀取器,但我碰到這個問題。有沒有什麼方法可以讓掃描器只要返回一個「」,每當它找到這樣的空行?歡呼聲
我一直有很多麻煩,試圖讓掃描儀或緩衝讀取器嘗試和檢測一個空行。例如,如果我有一個包含文件:Java掃描儀檢測空行?
there
cat
dog
(BLANK LINE)
如果我這樣做:
while(scan.hasNextLine())
{
String line = scan.nextLine();
...
...
}
掃描儀不拿起空行。我也嘗試使用緩衝讀取器,但我碰到這個問題。有沒有什麼方法可以讓掃描器只要返回一個「」,每當它找到這樣的空行?歡呼聲
您的輸入有多少行,因爲它有\n
個字符。給定了輸入
"there\ncat\ndog\n"
下一行將被正確地劃分爲
"there\n"
"cat\n"
"dog\n"
(換句話說,沒有第四空白行,因爲它不是由\n
終止。)
換句話說,在"dog\n"
已被讀取後,掃描儀(或緩衝讀取器)已達到EOF並且甚至沒有空行返回。 (請注意,當行被返回時,新行字符被剝離。)
所以,由於這是預期的行爲,我不知道最簡單的修復方法是什麼。我懷疑解決這個問題的最好方法是簡單地將\n
添加到輸入中,以便循環運行額外的迭代。
實際上,在輸入的末尾附加一個換行符聽起來像是會有訣竅!唯一的問題是我很不確定我應該如何去做。我正在閱讀這樣一個文件atm:scan = new Scanner(new BufferedReader(new FileReader(args [0])));有任何想法嗎? (我不想修改我正在直接閱讀的文件並添加一個換行符) – Chrispy 2012-04-22 08:40:35
使用'掃描儀'或'BufferedReader',無法確定接收到的行是否以換行符結束是你需要知道的,如果你想添加一個新行,如果它不包含在輸入的最後一行)。你必須用我認爲不同的方法。 – aioobe 2012-04-22 08:50:26
編輯據我所知,掃描儀刪除空白行 - 如果您確定文件以空行結束,請在此之後添加「\ n」,但不夠優雅,但可能有用。 – 2012-04-22 14:52:15
空行是輸入的最後一行嗎? – aioobe 2012-04-22 08:23:11
是的,它是輸入的最後一行 – Chrispy 2012-04-22 08:24:24
爲了更好地提供幫助,請發佈[SSCCE](http://sscce.org/)。 – 2012-04-22 08:29:10