NullPointer Exception

tresor -  
 tresor -
Bonjour,
J'ai un projet à rendre demain et j'ai un petit souci qui me fait perdre du temps: Je dois lire un fichier et stocker les données dans une arrayListe, sauf que ce fichier est au format arff donc je dois éliminer les lignes qui commencent par '%' et '@' mais quand j'exécute mon code, j'ai une nullPointer Exception, quelqu'un pourrait-il m'aider svp? merci d'avance

voici le code:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;

public class AlgoId3
private ArrayList<String> data;

public void charger(String nameFile) throws IOException{
String str;
StringTokenizer st;
BufferedReader buf1=new BufferedReader(new FileReader(nameFile));
try {
while((str=buf1.readLine())!=null){
if (str.charAt(0)!= '%' && str.charAt(0)!= '@'){// on vérifie que la ligne ne commence pas par % ou @
st=new StringTokenizer(str, ",");
while (st.hasMoreTokens()){
data.add(st.nextToken());

for (int k= 0; k<data.size(); k++)
System.out.println(data.get(k));
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
buf1.close();

}

1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
À propos de faire perdre du temps, il serait bien que tu nous indique sur quelle ligne intervient l'exception, que tu nous donnes le main que tu utilises, et un exemple de fichier qui plante, parce que je ne connais pas le format arff et que ça peut avoir de l'importance...
0
tresor
 
tu as raison je crois que ici le format arff n'a pas d'importance. En ce qui concerne le main, j'ai just créé une instance de l'objet et j'ai appelé la méthode comme suit:

public static void main(String[] args) throws IOException {

AlgoId3 test = new AlgoId3();

test.charger ("zoo.arff");
}



et voici le rendu:

Exception in thread "main" java.lang.NullPointerException
at projet.AlgoId3.charger(AlgoId3.java:75)
at projet.AlgoId3.main(AlgoId3.java:111)
0
KX Messages postés 19031 Statut Modérateur 3 020
 
data n'est pas initialisée, il te faut un data = new ArrayList<String>() quelque part...
0
tresor
 
j'ai essayé et le problème est résolu mais un autre problème est généré. Je te remercie pour ton aide @ bientot
0