Comment diviser les chaînes dans un fichier et de les lire?
J'ai un fichier avec des informations. Il ressemble:
Michael 19 180 Miami
George 25 176 Washington
William 43 188 Seattle
Je veux diviser les lignes et les chaînes de caractères et de les lire. Je veux qu'il ressemble:
Michael
19
180
Miami
George
...
j'ai utilisé un code comme ceci:
BufferedReader in = null;
String read;
int linenum;
try{
in = new BufferedReader(new FileReader("fileeditor.txt"));
}
catch (FileNotFoundException e) {System.out.println("There was a problem: " + e);}
try{
for (linenum = 0; linenum<100; linenum++){
read = in.readLine();
if(read == null){}
else{
String[] splited = read.split("\\s+");
System.out.println(splited[linenum]);
}
}
}
catch (IOException e) {System.out.println("There was a problem: " + e);}
}
Ce que cela m'a donné était
Michael
25
188
Je pense que c'est probablement un problème avec ma boucle for mais je ne suis pas très avancé dans la programmation et je vais apprécier de l'aide. Merci.
OriginalL'auteur Solijoli | 2013-09-04
Vous devez vous connecter pour publier un commentaire.
Vous êtes à mi-chemin là qui est grand.
Lors de la lecture d'un fichier, le
Reader
sera de retournull
quand il atteint la fin du flux, en ce sens rien d'autre n'est disponible pour la lecture. Votre approche actuelle signifie que vous voulez lire à moins de 100 lignes, mais pas plus...cela va devenir problématique dans le futur si vous taille du fichier augmente...c'est aussi un peu de gaspillageAu lieu de cela, nous devrions utiliser le fait qu'une
null
valeur indique la fin du fichier..Lorsque vous divisez une ligne, il contiendra un certain nombre d'éléments. Vous êtes à l'aide de la
linenum
variable d'imprimer ces. Le problème, c'est que vous avez déjà lu et séparer la ligne, lalinenum
est pas pertinent pour cette tâche, car il représente le nombre de lignes que vous avez déjà lu, pas la partie de la chaîne que vous venez de split.Au lieu de cela, vous devez utiliser une boucle pour afficher l'individu partager des éléments de chaque ligne...
Par exemple...
Aussi, n'oubliez pas, si vous l'ouvrez, vous moisi fermer 😉
Vous voudrez peut-être prendre un peu plus de temps en passant par E/S De Base ainsi 😉
OriginalL'auteur MadProgrammer
Vous devriez boucle le résultat après la scission de la chaîne.
OriginalL'auteur Suresh Atta
Vous pouvez utiliser un
StreamTokenizer
. Il va diviser un flux de données en jetons en fonction de ses paramètres. À partir de votre question, je pense que vous voulez traiter les fins de ligne tout comme jeton de séparateurs. Le code devrait ressembler à ceci:En fonction de ce que vous devez faire avec l'entrée vous devrez peut-être définir différentes options, la documentation devrait vous aider ici.
Scanner
semble être mieux.StreamTokenizer
est obsolète.OriginalL'auteur Viktor Seifert