Lire un fichier séparé par un onglet et placer les mots dans une liste de tableaux
Je suis en train de faire un auto-apprentissage de l'exercice pour m'aider à comprendre plus au sujet de Java, mais je suis bloqué à cette question. J'ai le texte suivant d'un fichier txt:
Name Hobby
Susy eat fish
Anna gardening
Billy bowling with friends
Remarque: nom et passe-temps sont séparés par une tabulation
Quelle est la meilleure façon de lire toute la ligne et le mettre dans arraylist(nom,passe-temps). La partie délicate est que
eat fish or bowling with friends
a espaces et, il faut le mettre sous un tableau et évidemment je ne peux pas coder en dur. Voici mon code actuel:
public void openFile(){
try{
FileInputStream fstream = new FileInputStream("textfile.txt");
//use DataInputStream to read binary NOT text
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
ArrayList<String> names = new ArrayList<String>();
ArrayList<String> hobbies = new ArrayList<String>();
String lineJustFetched;
while ((lineJustFetched = br.readLine()) != null) {
String[] tokens = lineJustFetched.split(" \t");
J'ai une erreur:
java.lang.StringIndexOutOfBoundsException: String index out of range:
-1
Je soupçonne le comptage de l'index n'est pas très utile sur un onglet.
Une idée?
source d'informationauteur user2891092
Vous devez vous connecter pour publier un commentaire.
Bien, vous devez faire la recette présentée ci-dessous:
BufferedReader
ArrayList<String>
String
variable nomméelineJustFetched
.String
en appelantlineJustFetched.split("\t");
String[]
produit. Vérifiez si le jeton que vous voulez entrer dans leArrayList
n'est pas""
ArrayList
Vous indiquez que vous avez besoin de partager basé sur
\t
valeurs espaces blancs ne sera pas un problème.SSCCE
Sortie
Si vous vous êtes séparé de Nom et de loisirs de la colonne avec l'onglet
\t
vous devriez faire quelque chose comme ceci (et ne pas oublier de fermer la numérisation à la fin):Pour d'autres encore tomber sur cette.
À l'aide de
Stream
API (Java 8), ce qui peut être fait commeCette montre
Et la sortie
Vous devriez essayer le commons-lang de la bibliothèque. http://commons.apache.org/proper/commons-lang/javadocs/api-3.1/index.html Parmi beaucoup d'autres choses utiles que vous pouvez découper une chaîne en utilisant un délimiteur:
String x="Billy bowling with friends";
String y[]=StringUtils.split(x, '\t');
En supposant qu'il existe des tabulations entre Billy et le bowling,
y[0] contient "Billy"
y[1] contient "bowling avec des amis"
Pour de futures références lorsque vous analysez sortir onglet il y a un délimiteur comme "\t" pour l'onglet.
Au lieu d'utiliser .split(" ")
Aussi, lorsque votre erreur est levée, car il signifie qu'aucun caractère n'est trouvé, d'où le -1, de sorte que lorsque vous essayez de le stocker dans un Tableau... -1 n'est pas valide. (jetez dans une case pour ça)
Vous pouvez lancer votre programme F10 ou F11..ou une autre touche en fonction de votre IDE
Juste quelques conseils