Как читать определенные строки из текстового файла, используя Java? - PullRequest
1 голос
/ 04 марта 2011

У меня есть текстовый файл, который может хранить до 3 строк (каждая строка имеет время ##: ##).

Если весь текстовый файл пуст: сделайте задание 1

иначе, если в первой строке есть время: do задание 2

иначе, если первая и вторая строки заполнено временем: выполнить задание 3

иначе, если у всех трех строк есть время: do задание 4

иначе, если у всех трех строк есть время, но первая строка времени и третья строка время перерыва более 2 часов: сделать задание 5

Я разобрался с первыми двумя.

if ((inputFile.readLine()) == null) {Keypad5 task1 = new Keypad5(); }

else if ((inputFile.readLine()) !=null) {Keypad6 task2 = new Keypad6();}

Как я могу прочитать и вторые и третьи строки? И если вторая строка имеет время 12:54, а третья строка имеет 3:55, это разрыв больше, чем на 2 часа. Я могу вычесть время, вероятно.

Ответы [ 3 ]

3 голосов
/ 04 марта 2011

Я предлагаю вам прочитать все три строки, прежде чем решить, что делать. Это уменьшило бы «копирование и вставку» чтения строк второй и третьей.

Что-то вроде этого может быть тем, что вы ищете:

List<String> lines = new ArrayList<String>();

Scanner s = new Scanner(new File("filename.txt"));
while (s.hasNextLine())
    lines.add(s.nextLine());

switch (lines.size()) {
case 0: doTask1(); break;
case 1: doTask2(); break;
case 2: doTask3(); break;
case 3:
    if (gapBetween(lines.get(0), lines.get(2)) < 2)
        doTask4();
    else
        doTask5();
}
0 голосов
/ 04 марта 2011

Я бы сделал это, сначала прочитав все строки текста в коллекцию, если вы уверены, что это будет всего 3 строки, это не вызовет проблемы с памятью, и вам не нужно делать большая обработка ошибок.

ArrayList<String> lines = new ArrayList<String>();
String line = null;
while ((line = inputFile.readLine()) != null){
lines.add(line);
}

Тогда вы можете довольно легко выполнить некоторые операторы if, не перезаписывая предыдущие строки в буфере. (Я предполагаю, что «inputFile» является BufferedReader)

0 голосов
/ 04 марта 2011

последующие вызовы readLine () в BufferedReader всегда читают следующую строку файла.Если вы хотите сравнить разные строки, вы должны сохранить их в переменных и сравнить их потом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...