Erreur en executant: Exception in thread "mai

Fermé
bencordesse - 8 janv. 2009 à 18:53
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 9 janv. 2009 à 13:56
Bonjourà tous!

j'ai besoin de votre aide.
j'ai cette erreur qui s'affiche lorsque j'execute ces lignes de commandes:
java.lang.NullPointerException
at test.Parse.<init>(Parse.java:22)

at test.Parse.main(Parse.java:73)

Exception in thread "main"

j'utilise JBuilder X pour compiler et executer le programme. je ne comprends pas pourquoi cela ne fonctionne pas. lorsque je compile, il ne detecte pas d'erreur et quand j'execute, un erreur fatal apparait.

je vous joint le code:

merci d'avance!

package test;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.FileNotFoundException;


public class Parse
{
BufferedReader scan;
FileReader fichier;

Parse(String file)
{
try
{
fichier = new FileReader(file);
scan = new BufferedReader(fichier);
}
catch (FileNotFoundException e)
{
System.out.println("Cannot read the file " + fichier.toString());
System.exit(-1);
}
}

boolean hasNextLine()
{
boolean ready = false;
try
{
ready = this.scan.ready();
}
catch (IOException e)
{
System.out.println("No new line");
}
return (ready);
}

String[] nextLine()
{
String line = "";
try
{
line = this.scan.readLine();
}
catch (IOException e)
{
System.out.println("No new line: " + e);
}
return (line.split(" "));
}

public void finalize()
{
try
{
scan.close();
}
catch (IOException e)
{
System.out.println("can't close: " + e);
}
scan = null;
fichier = null;
}

public static void main(String[] Arguments)
{
int i = 0;
String[] result;
Parse parse = new Parse("eleves.txt");
while (parse.hasNextLine())
{
result = parse.nextLine();
System.out.println("nom " + i + ": " + result[0] + "| prenom " + i + ": " + result[1] + "| promo " + i + ": " + result[2]);
++i;
}
parse = null;
}
}
A voir également:

1 réponse

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
8 janv. 2009 à 20:22
Salut,

Parse(String file)
{
    try {
        fichier = new FileReader(file);
        scan = new BufferedReader(fichier);
    }
    catch (FileNotFoundException e) {
        System.out.println("Cannot read the file " + fichier.toString()); // <- Là
        System.exit(-1);
    }
} 


Salut,

Tu as essayé de créer un objet de type FileReader, mais si cette création échoue, alors fichier ne change pas et est égal
à null (valeur par défaut si tu ne lui en donnes pas avant).

Ensuite tu passes dans le catch, et tu essaies fichier.toString(), ce qui est l'équivalent de null.toString()
D'ou l'erreur.

Il faut en réalité que tu fasses:
System.out.println("Cannot read the file " + file);

Et que tu changes le chemin de "eleves.txt"
0
merci pour ta reponse rapide.
j'ai cependant encore une question:

qu'est ce que tu entends par redefinir le chemin de "eleves.txt"
j'ai changé la ligne que tu m'as dit et j'ais plus d'erreur . en revanche le programme me donne toujours en sortie:

Cannot read the file eleve.txt
est-ce normal?
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527 > bencordesse
9 janv. 2009 à 13:56
Met le chemin complet vers eleves.txt
0