Récupération et stockage données d'un fichier txt

matthiasdu81 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je souhaiterais récupérer les parties d'un fichier txt et je ne comprend pas pourquoi ce code ne marche pas, sachant qu'il y a deux parties différentes des positions et des liens que je souhaiterais stocker dans deux listes différentes.

import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;

public class ScannerMap {

Scanner sc;
ArrayList<String> PosList = new ArrayList<String>();
ArrayList<String> LienList = new ArrayList<String>();

public ArrayList<String> PosList(File map){

int i = 0;
sc = new Scanner(new File);

while(sc.hasNext()){
if (sc.nextLine() != "begin_nodes"){

if (sc.nextLine() == "end_nodes"){ return PosList;}

PosList.add(i,sc.nextLine());
i = i+1;

}
}

}

public ArrayList<String> LienList(File map){

int k = 0;
sc = new Scanner(new File);
while(sc.hasNext() & sc.nextLine() != "end_edges"){
if(sc.nextLine() == "begin_edges"){
while(sc.hasNext() & sc.nextLine() != "end_edges"){
if (sc.nextLine() != "begin_edges" & sc.nextLine() != "end_edges"){


LienList.add(k,sc.nextLine());
k = k+1;
}
}

}
}
return LienList;
}
A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
1) Les opérateurs == ou != comparent les références d'objets, en aucun cas leur valeur ! Il faut que tu utilises la méthode equals pour comparer tes chaînes de caractères.

2) La conjonction de valeurs booléennes se fait avec l'opérateur && pas avec l'opérateur & qui est un opérateur de calcul de bits.

3) À chaque fois que tu utilises nextLine c'est une nouvelle ligne qui est récupérée, donc plusieurs nextLine consécutifs ne concerneront jamais la même valeur.

Par exemple si ton fichier contient ces valeurs là :

ligne1 
ligne2 
ligne3

Alors ta méthode PosList va faire ces tests là (ce qui n'est pas du tout ce que tu veux)

if ("ligne1" != "begin_nodes"){ 
if ("ligne2" == "end_nodes"){ return PosList;} 
PosList.add(i,"ligne3"); 

4) N'oublies pas de fermer ton fichier quand tu as terminé son traitement.

5) Il faudrait que tu indentes correctement ton code et que tu respectes les conventions de nommage Java (les variables et les noms de méthodes commencent par une minuscule)La confiance n'exclut pas le contrôle
0