2012-04-22 35 views
1

我一直有很多麻煩,試圖讓掃描儀或緩衝讀取器嘗試和檢測一個空行。例如,如果我有一個包含文件:Java掃描儀檢測空行?

there 
cat 
dog 
(BLANK LINE) 

如果我這樣做:

while(scan.hasNextLine()) 
{ 
String line = scan.nextLine(); 
... 
... 
} 

掃描儀不拿起空行。我也嘗試使用緩衝讀取器,但我碰到這個問題。有沒有什麼方法可以讓掃描器只要返回一個「」,每當它找到這樣的空行?歡呼聲

+0

空行是輸入的最後一行嗎? – aioobe 2012-04-22 08:23:11

+0

是的,它是輸入的最後一行 – Chrispy 2012-04-22 08:24:24

+0

爲了更好地提供幫助,請發佈[SSCCE](http://sscce.org/)。 – 2012-04-22 08:29:10

回答

3

您的輸入有多少行,因爲它有\n個字符。給定了輸入

"there\ncat\ndog\n" 

下一行將被正確地劃分爲

"there\n" 
"cat\n" 
"dog\n" 

(換句話說,沒有第四空白行,因爲它不是由\n終止。)

換句話說,在"dog\n"已被讀取後,掃描儀(或緩衝讀取器)已達到EOF並且甚至沒有空行返回。 (請注意,當行被返回時,新行字符被剝離。)

所以,由於這是預期的行爲,我不知道最簡單的修復方法是什麼。我懷疑解決這個問題的最好方法是簡單地將\n添加到輸入中,以便循環運行額外的迭代。

+0

實際上,在輸入的末尾附加一個換行符聽起來像是會有訣竅!唯一的問題是我很不確定我應該如何去做。我正在閱讀這樣一個文件atm:scan = new Scanner(new BufferedReader(new FileReader(args [0])));有任何想法嗎? (我不想修改我正在直接閱讀的文件並添加一個換行符) – Chrispy 2012-04-22 08:40:35

+0

使用'掃描儀'或'BufferedReader',無法確定接收到的行是否以換行符結束是你需要知道的,如果你想添加一個新行,如果它不包含在輸入的最後一行)。你必須用我認爲不同的方法。 – aioobe 2012-04-22 08:50:26

+0

編輯據我所知,掃描儀刪除空白行 - 如果您確定文件以空行結束,請在此之後添加「\ n」,但不夠優雅,但可能有用。 – 2012-04-22 14:52:15