2013-09-23 3 views
0

Мне нужно добавить содержимое каждой строки (одного слова) текстового файла ввода пользователя в отдельный элемент массива. * Я знаю, что ArrayList - лучшая структура данных для этой проблемы, но я ограничена использованием только массива.Добавление каждой строки из входного файла в массив

Вот мой код:

public static void main(String[] args) throws FileNotFoundException { 
    Scanner scanner = new Scanner(System.in); 
    System.out.print("Enter a file name: "); 
    System.out.flush(); 
    String filename = scanner.nextLine(); 
    File file = new File(filename); 
    FileReader reader = new FileReader(file); 
    try (BufferedReader buffReader = new BufferedReader(reader)) { 
     String line; 
     int i=0; 
     String[] words = new String[10]; 
     while((line = buffReader.readLine()) != null) { 
      words[i]=buffReader.readLine(); 
      System.out.println(words[i]); 
      i++; 
     } 
    } 
    catch(IOException e){ 
     System.out.println(e); 
    } 
} 

Входной файл просто:

Pans 
Pots 
opt 
sit 
it's 
snap 

выход программы ниже. Кажется, он пропускает каждую другую линию.

Pots 
sit 
snap 

ответ

4

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

Устранить второй вызов в теле цикла, так что у вас есть одна итерация цикла (и одного оператора печати) на строку.

1

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

while((line = buffReader.readLine()) != null) { 
     System.out.println(line); 
     i++; 
} 
0
while((line = buffReader.readLine()) != null) 

этой линию чтение и поглотил первую входную линию, и именно поэтому вы не видите сковородки и даже индексированные входы.

0

Можете ли вы использовать ArrayList, а не просто преобразовывать его в массив с использованием метода toArray? Каковы ваши ограничения и почему?

0
public static void main(String[] args) throws FileNotFoundException { 
    Scanner scanner = new Scanner(System.in); 
    System.out.print("Enter a file name: "); 
    System.out.flush(); 
    String filename = scanner.nextLine(); 
    File file = new File(filename); 
    FileReader reader = new FileReader(file); 
    try (BufferedReader buffReader = new BufferedReader(reader)) { 
     String line; 
     int i=0; 
     String[] words = new String[10]; 
     //modify line = buffReader.readLine() 
     while((words[i]=buffReader.readLine()) != null) { 
       //modify //words[i]=buffReader.readLine(); 
      //words[i]=buffReader.readLine(); 
      System.out.println(words[i]); 
      i++; 
     } 
    } 
    catch(IOException e){ 
     System.out.println(e); 
    } 
} 
Смежные вопросы