2015-11-26 1 views
0

Le programme que j'écris est en Java. Je tente de faire lire mon programme par le fichier "name.txt" et de stocker les valeurs du fichier texte dans un tableau. Jusqu'à présent, j'utilise un fichier texte qui sera lu dans mon programme principal, une classe de service appelée People.java qui servira de modèle pour mon programme, et mon programme principal appelé Names.java qui lira le fichier texte et stocker ses valeurs dans un tableau.Lecture de fichiers pour stocker leurs données dans un tableau

nom.txt:

John!Doe 
Jane!Doe 
Mike!Smith 
John!Smith 
George!Smith 

People.java:

public class People 

    { 
     String firstname = " "; 
     String lastname = " "; 

     public People() 
     { 
      firstname = "First Name"; 
      lastname = "Last Name"; 
     } 

     public People(String firnam, String lasnam) 
     { 
      firstname = firnam; 
      lastname = lasnam; 
     } 
} 

Names.java:

import java.io.File; 
import java.io.IOException; 
import java.util.Scanner; 
import java.util.StringTokenizer; 
public class Names 
{ 
    public static void main(String[]args) 
    { 
     String a = " "; 
     String b = "empty"; 
     String c = "empty"; 
     int counter = 0; 


     People[]peoplearray=new People[5]; 

     try 
     { 
      File names = new File("name.txt"); 
      Scanner read = new Scanner(names); 

      while(read.hasNext()) 
      { 
       a = read.next(); 
       StringTokenizer token = new StringTokenizer("!", a); 

       while(token.hasMoreTokens()) 
       { 
       b = token.nextToken(); 
       c = token.nextToken(); 
       } 

       People p = new People(b,c); 
       peoplearray[counter]=p; 
       ++counter; 

      } 
     } 

     catch(IOException ioe1) 
     { 
      System.out.println("There was a problem reading the file."); 
     } 

     System.out.println(peoplearray[0]); 

    } 
} 

Comme je le montre dans mon programme, j'ai essayé d'imprimer la valeur de peoplearray [0], mais quand je fais ceci, ma sortie lit: "empty empty" qui sont les valeurs que j'ai donné String b et String c quand j'ai instancié le m.

Si le programme travaillaient corrrectly, la valeur de peoplearray [0] devrait être, « John Doe » comme ce sont les valeurs appropriées dans « names.txt »

Que puis-je faire pour résoudre ce problème?

Merci!

+0

Pourquoi ne pas simplement utiliser un 'list'? Pourquoi un tableau? – fge

+0

ne pas oublier de fermer le scanner dans un bloc finally (ou utiliser la construction try (resource) {...}). Utilisez également le constructeur de Scanner avec le jeu de caractères: new Scanner (fichier, charset); – Thierry

Répondre

0

StringTokenizer (String str, String delim)

est le constructeur de StringTokenizer.

Vous l'avez écrit incorrect.
Il suffit de changer votre ligne StringTokenizer token = new StringTokenizer("!", a); à

StringTokenizer token = new StringTokenizer(a, "!"); 
0

changer juste un peu

 StringTokenizer token = new StringTokenizer(a, "!"); 
     while(token.hasMoreTokens()) 
     { 
      b = token.nextToken(); 
      c = token.nextToken(); 
     } 
     //do something with them