2017-09-26 4 views
0

Mon programme lit un fichier externe et place chaque ligne de données dans une liste de tableaux. Il y a 5 valeurs différentes sur une ligne dans le fichier externe et les valeurs sont séparées par des virgules. Je ne peux pas comprendre comment obtenir cette première valeur dans la liste de tableau à utiliser dans d'autres parties de mon code. La première valeur dans le fichier est le nom et c'est ce que j'essaye de faire correspondre avec l'entrée qu'ils font pour changeName.Récupère la première valeur dans une liste de tableaux avant la virgule

System.out.println("Enter the name of the player you would like to change the amount for"); 
    String changeName = FileUtility.getInput().nextLine(); 

    Scanner s = new Scanner(new File(FILE_NAME)); 
    String str = ""; 
    ArrayList<String> list = new ArrayList<String>(); 

    while (s.hasNext()) { 
     list.add(s.next()); 
    } 
+1

Je suggère que vous vous familiarisez avec la [Documentation chaîne] (https : //docs.oracle.com/javase/7/docs/api/java/lang/String.html). Vous pouvez trouver des fonctions qui vous seront utiles en parcourant cette page. –

+0

Connaissez-vous la méthode 'split' de la classe' String'? –

+0

@ Code-Apprentice J'ai utilisé str.split et j'ai reçu l'erreur disant que string [] ne peut pas être converti en ArrayList utilisé ce code list = str.split (","); –

Répondre

0

Ok, si je vous ai raison, cela va faire ce que vous voulez:

 Scanner s = new Scanner(new File("test.txt")); 
     String str = ""; 
     List<List<String>> list = new ArrayList<List<String>>(); 

     while (s.hasNext()) { 
      list.add(Arrays.asList(s.nextLine().split(","))); 
     } 

     // then you can acces random element from the list this way 
     System.out.println(list.get(0).get(1)); 

     // or print all values in the list 
     for (List<String> elem : list) { 
      System.out.println(Arrays.toString(elem.toArray())); 
     } 

Sortie:

asdf 
[asdf, asdf, asdf, asdf, asdf] 
[asdf, asdf, asdf, asdf, asdf] 

Mon test.txt:

asdf,asdf,asdf,asdf,asdf 
asdf,asdf,asdf,asdf,asdf 
+0

vous êtes un épargnant de vie! Exactement ce que je voulais, merci! –

+0

juste une question de plus, comment pourrais-je obtenir la première valeur dans une ligne différente? En ce moment je fais if (list.get (0) .contains (firstValue)) {fait stuff} mais quand j'entre la première valeur sur la deuxième ligne l'instruction if est fausse –

+0

Vous avez une matrice. Le premier index est la ligne num et la seconde colonne num. Vous pouvez donc accéder à n'importe quelle ligne comme 'list.get (0) list.get (1) list.get (2) ....' et vous pouvez accéder à n'importe quelle colonne sur cette ligne comme 'list.get (1). get (0) ' –