2015-10-21 4 views
0

Я пишу код, который первые) запрашивает у пользователя имени файла вторые) читает файл и помещает каждую строку в ArrayList третьей) печатает ArrayListКак прирастить время цикла, чтобы прочитать следующую строку в файл

Мой код читает файл с BufferedReader, но он только распечатывает первую строку 25 раз, а не распечатывает 25 разных строк.

Это то, что выглядит мой цикл while. Я не знаю, как его увеличить, хотя

ArrayList<String> stringArray = new ArrayList<String>(); 
BufferedReader reader = null; 
reader = new BufferedReader(new FileReader(fileName)); 

String line = reader.readLine(); 
while(reader.readLine() != null){ 
    stringArray.add(line); 
} 
return stringArray; 

Любые мысли?

+0

Для более простого решения с использованием 'Scanner', (или даже одну гильзу с помощью Apache Commons ввода/вывода или Google Guava), см [Java чтение файла в ArrayList?] (http://stackoverflow.com/questions/5343689/java-reading-a-file-into-an-arraylist) –

ответ

1

Вы не читаете строку в переменной при каждом прогоне, вам нужно прочитать ее в цикле while.

String line = reader.readLine(); 
while(line != null){ 
    stringArray.add(line); 
    line = reader.readLine(); // read the next line 
} 
return stringArray; 
+0

Некоторые люди также предпочитают выполнять задание в части while, например : 'while (line = reader.readLine()! = null) {...' –

+0

Спасибо за помощь! – lovethehelp

0

Это не предпочтительное решение. Просто показывая, что это можно сделать по-другому.

Или вы можете использовать do ... while вместо того, чтобы ... делать.

String line; 
do { 
    line = reader.readLine(); 
    if (line != null) { 
     stringArray.add(line); 
    } 
} while (line != null); 

Вы можете видеть, почему это не предпочтительное решение. Вы делаете 2 нулевые чеки, где вы можете получить прочь с 1

+0

Почему сообщение «не является предпочтительным решением»? – javabrew

+0

По этой же причине мы изучаем алгоритмы сортировки, отличные от Quicksort, Mergesort и Heapsort. Иногда видя другой способ делать вещи, улучшает наше понимание и оценку. Иногда он предоставляет фон. Иногда другая конструкция может оказаться полезной в другом случае. Почему в Java существует цикл while, когда цикл while может делать то же самое с одним дополнительным флагом? – Sammy

+0

извините, это всего лишь плохая часть кода ... – javabrew

0
while (true) { 
    String line = reader.readLine(); 
    if (line == null) break; 
    stringArray.add(line); 
} 
return stringArray; 
Смежные вопросы