2009-12-08 74 views
1

我和我的好友正在爲我們在大學的面向對象編程課程開發一個程序。我們正在嘗試將文本作爲信息數據庫寫入文件。問題是,當我們試圖用BufferedReader讀取相應的行時,我們似乎無法弄清楚如何讀取正確的行。唯一可用的函數似乎是read(),它只讀取一個字符。 readLine()只讀取一行(不是我們想要它讀取的行,skip()只跳過指定的字符數目任何人都知道我們如何告訴程序我們要讀取的行數我們的方法getAnswer()與參數INT ROWNUMBER是我們正在嘗試做的一個: 超類:http://pastebin.com/d2d9ac07f 子類是無關緊要的(主要是因爲我們還沒有寫它尚未) 當然是Java中,我們正在與 由於事先Java中的BufferedReader問題

+0

看一看掃描儀(http://java.sun.com/javase/6/docs/api/java/util/Scanner.html),並從那裏...... – Tim 2009-12-08 14:15:29

+0

你怎麼是不是使用掃描儀幾乎與將文本讀入字符串一樣?我們的問題是,我們無法想出如何告訴讀者從文件中讀取哪一行。 – Philip 2009-12-08 14:17:24

回答

6

您必須使用readLine(),在循環中執行此操作,請計算您已閱讀的行數,直到達到您要處理的行號。

BufferedReader或其他標準庫類沒有方法可以自動爲您讀取行號N.

+1

這是我們在一段時間後想的,謝謝你讓我們知道!似乎是最聰明的方式。 – Philip 2009-12-08 14:19:47

+0

該死的,你打我20秒:( – Brendan 2009-12-08 14:19:56

3

使用緩衝讀取器.readLine();方法,直到找到所需的數據爲止,扔掉所有你不需要的數據,然後存儲你需要的數據,但這並不會讓你的工作完成。 。

2

readLine()在Java中只需從緩存中讀取,直到它在一個換行符,所以就真的沒有辦法爲你指定行應該從文件中讀取的,因爲沒有辦法對Java知道每條線的長度是多長。

這個原因也是爲什麼使用skip()跳轉到特定行很困難的原因。

如果你使用readLine()來循環行,那麼當你的計數器在你想要的位置時,開始處理可能會更好。

String line = myBufferedReader.readLine(); 
for(int i = 1; i < whichLine && line != null; i++){ 
    line = myBufferedReader.readLine(); 
} 

/* do something */