2016-10-13 5 views
0

У меня есть программа, которая должна взять текстовый файл, указанный в аргументах run, и печатать его по одному слову за раз на отдельных строках. Он должен опускать любые специальные символы, кроме тире (-) и апострофы (').Проблема с StringTokenizer с использованием двух строк текста

Я в основном закончил программу, за исключением того, что я могу получить ее только для печати первой строки текста в файле.

Вот что находится в текстовом файле:

Это первая строка входного файла. Он имеет более одной линии!

Вот аргументы пробега я использую:

Java A1 A1.txt

Вот мой код:

import java.io.*; 
import java.util.*; 

public class A1 
{ 
    public static void main (String [] args) throws IOException 
    { 
     if (args.length > 0) 
     { 
     String file = (args[2]); 

     try 
     { 
      FileReader fr = new FileReader (file); 
      BufferedReader br = new BufferedReader(fr); 
      String s = br.readLine(); 
      int i = 1; 
      StringTokenizer st = new StringTokenizer(s); 
      while (st.hasMoreTokens()) 
      { 
      System.out.println(st.nextToken()); 

      } 
       br.close(); 
      } catch (IOException e) 
      { 
       System.out.println ("The following error occurred " + e); 
      } 
     } 
     } 
    } 

ответ

1

Вы только вызов readLine() один раз! Таким образом, вы читаете и разбираете только первую строку входного файла. Затем программа заканчивается.

То, что вы хотите сделать, это бросить, что в цикле в то время как и читать каждую строку файла, пока вы не дойдете до конца, вот так:

while((s = br.readLine()) != null) { 
    StringTokenizer st = new StringTokenizer(s); 
    while (st.hasMoreTokens()) { 
     System.out.println(st.nextToken()); 
    } 
} 

В принципе, это означает, «в то время это следующая строка для чтения, выполните следующую строку с этой строкой ».

 Смежные вопросы

  • Нет связанных вопросов^_^