2015-03-02 1 views
0

J'essaie de faire une tâche très simple mais je n'obtiens pas les résultats que je veux. J'ai un fichier texte avec des noms séparés par une virgule sur plusieurs lignes et je veux stocker cette information dans un tableau 1D. Lorsque j'exécute mon code et que j'essaie d'imprimer le tableau pour m'assurer que mes informations ont été enregistrées, la console n'imprime que la dernière ligne du fichier texte. Quel est le problème avec mon code? J'ai essayé de jouer avec mais j'ai trouvé aucune solution à mon problème. L'information est-elle écrasée?Lire un fichier dans Java en utilisant StringTokenizer

import java.util.*; 

public class Tokens { 
public static TextFileInput myFile; 
public static StringTokenizer myTokens; 
public static String name; 
public static String[] names; 
public static String line; 

public static void main(String[] args) { 

myFile = new TextFileInput("namesofstudents.txt"); 

    while ((line = myFile.readLine())!= null) {  
    int i=0;  

    myTokens = new StringTokenizer(line, ","); 
    names = new String[myTokens.countTokens()]; 

     while (myTokens.hasMoreTokens()){ 
      names[i] = myTokens.nextToken(); 
      i++; 
    }   
    }  

for (int j=0;j<names.length;j++){ 
    System.out.println(names[j]);  
} 


    } 
} 

exemple d'entrée:

Mark, Joe, Bob 
    James, Jacob, Andy, Carl 

sortie:

James 
Jacob 
Andy 
Carl 

Répondre

0

Vous redémarrant votre compteur et la réécriture names sur chaque ligne. Essayez de créer names comme ArrayList.

ArrayList<String> names; 

Initialiser une fois en dehors de la première boucle comme ceci:

names = new ArrayList<String>(); 

Ensuite, chaque fois que vous mettriez normalement le nom dans le tableau remplacer cette ligne:

names[i] = myTokens.nextToken(); 

Avec:

names.add(myTokens.nextToken()); 
+0

merci, il a finalement compris ood it! – user23429

1

Le code initialise i-0 au début de chaque ligne. Faites-le au début de la course.

1

envisager d'utiliser un ArrayList qui rend la vie plus facile ...

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

while ((line = myFile.readLine())!= null) {   

myTokens = new StringTokenizer(line, ",");  

    while (myTokens.hasMoreTokens()){ 
     names.add(myTokens.nextToken()); 
    }   
}  

System.out.println(names);