Lecture depuis un fichier [Résolu]

SMM@ 12 Messages postés dimanche 7 février 2016Date d'inscription 18 mai 2017 Dernière intervention - 7 déc. 2016 à 03:36 - Dernière réponse : SMM@ 12 Messages postés dimanche 7 février 2016Date d'inscription 18 mai 2017 Dernière intervention
- 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??
Afficher la suite 

2 réponses

Répondre au sujet
KX 15089 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 14 décembre 2017 Dernière intervention - 7 déc. 2016 à 07:06
0
Utile
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
Commenter la réponse de KX
SMM@ 12 Messages postés dimanche 7 février 2016Date d'inscription 18 mai 2017 Dernière intervention - 7 déc. 2016 à 11:19
0
Utile
ok merci beaucoup :)
Commenter la réponse de SMM@

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.