Lecture depuis un fichier

Résolu
SMM@ Messages postés 12 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 15 mars 2018 - 7 déc. 2016 à 03:36
SMM@ Messages postés 12 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 15 mars 2018 - 7 déc. 2016 à 11:19
bonsoir svp je veux lire des entiers qui sont dans un fichier pour les stocket on suite dans un tableau j'ai utiliser ce code pour lire les entiers et les afficher en écran
public void lire(String source) throws IOException{
File inputFile = new File(source);


FileReader in = new FileReader(inputFile);

int c=0;

while ((c =in.read()) != -1)
System.out.println(c);

in.close();

}
public static void main(String[] args) throws IOException {
new Lireentier("C:\\Users\\monpc\\Desktop\\so.txt");

}

}
mais le probléme c'est que il m'affiche des entires qui'ils n'existe pas dans mon fichier par exemple mon fichier contient 12 et il m'affiche 49 50
je sais pas d'ou il vient le problème??

2 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 127
7 déc. 2016 à 07:06
Bonjour,

Quand tu ne sais pas ce que fait une méthode il faut consulter la documentation associée : https://docs.oracle.com/javase/8/docs/api/java/io/InputStreamReader.html#read--

La méthode read() lit un caractère, pas un entier.
Or il se trouve que les caractères '1' et '2' valent respectivement 49 et 50 (que ce soit en ASCII, Unicode, etc.)

Pour info : Java travaille en UTF-16

Donc au lieu de faire un
System.out.println(c);
avec ton entier tu devrais plutôt faire un
System.out.println((char) c);
pour le convertir en caractère.
Eventuellement, pour le repasser en entier tu peux faire
int n = c - '0';
et utiliser n qui cette fois est bien un entier.

Remarque : tu pourrais aussi utiliser un Scanner et sa méthode nextInt() plutôt que de passer par un FileReader.
https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html
0
SMM@ Messages postés 12 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 15 mars 2018
7 déc. 2016 à 11:19
ok merci beaucoup :)
0
Rejoignez-nous