2016-10-13 1 views
0

J'ai un programme supposé prendre un fichier texte spécifié dans les arguments d'exécution et l'imprimer un mot à la fois sur des lignes séparées. Il est supposé omettre tous les caractères spéciaux à l'exception des tirets (-) et des apostrophes (').Problème avec StringTokenizer utilisant deux lignes de texte

J'ai pratiquement terminé le programme, sauf que je ne peux l'obtenir que pour imprimer la première ligne de texte dans le fichier.

Voici ce qui est dans le fichier texte:

C'est la première ligne du fichier d'entrée. Il a plus d'une ligne!

Voici les arguments d'exécution: J'utilise

java A1 A1.txt

Voici mon code:

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); 
      } 
     } 
     } 
    } 

Répondre

1

Vous n'appelle readLine() fois! Vous lisez et analysez simplement la première ligne du fichier d'entrée. Le programme se termine alors.

Ce que vous voulez faire est de jeter que dans une boucle while et lire chaque ligne du fichier, jusqu'à la fin, comme suit:

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

Fondamentalement, cela signifie « alors qu'il est une ligne suivante à lire, faites ce qui suit avec cette ligne ".