2009-12-08 4 views
1

Я и мой друг работают над программой для нашего курса по объектно-ориентированному программированию в колледже. Мы пытаемся записать текст в файл в виде базы данных для получения информации. Проблема в том, что когда мы пытаемся прочитать соответствующие строки с помощью BufferedReader, мы не можем понять, как читать правильные строки. Кажется, что доступны только доступные функции(), которые читают только символ. readLine() читает только строку (а не строку, которую мы хотим прочитать). skip() пропускает только несколько указанных символов. У любого есть идея, как мы можем сообщить программе, какую строку мы хотим читать? Наш метод getAnswer() с аргументом междунар ROWNUMBER является тот, который мы пытаемся сделать: суперкласса:. http://pastebin.com/d2d9ac07f Подкласс не имеет значения (в основном потому, что мы не написали его еще) конечно, это Java мы работаем с Спасибо заранееПроблема BufferedReader в Java

..
+0

Посмотрите на сканере (http://java.sun.com/javase/6/docs/api/java/util/Scanner.html) и взять его оттуда ... – Tim

+0

Как вам означает, что не использует сканер практически так же, как чтение текста в строку? Наша проблема заключается в том, что мы не можем думать о том, как рассказать читателю, какую строку читать из файла. – Philip

ответ

6

Вам нужно будет использовать readLine(), сделайте это в цикле, подсчитайте количество строк, которые вы уже прочитали, пока не достигнете номера строки, которую хотите обработать.

В BufferedReader нет другого метода или другого стандартного класса библиотеки, который будет автоматически читать номер строки N.

+1

Это то, что мы думали через некоторое время, спасибо, что сообщили нам! Кажется, это самый умный способ. – Philip

+0

Черт, ты избил меня, как 20 секунд :( – Brendan

3

Используйте Buffered Readers .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 */ 
Смежные вопросы