Java m´affiche une autre valeur que celle que j´ai saisi via la console, je ne sais pas qu´est ce qu´il manque au code.
Voici le code :
Code:
1
2
3 int a; a=System.in.read(); //a=2 System.out.println((int)a); // a=50!!!
Version imprimable
Java m´affiche une autre valeur que celle que j´ai saisi via la console, je ne sais pas qu´est ce qu´il manque au code.
Voici le code :
Code:
1
2
3 int a; a=System.in.read(); //a=2 System.out.println((int)a); // a=50!!!
read() fait une lecture binaire (en gros le code ascii du caractère tappé) et println fait de l'affichage texte (donc conversion des entier / flottant en texte).
Par conséquent, ton code récupère le 50 quand il lit 2 au clavier (de même qu'il récupérerais 32 si tu avais appuyé sur espace ou 65 si tu avais appuyé sur A) et affiche cette valeur. Tu viens d'écrire un code qui affiche le code ascii de ce qui a été tappé ;)
Si tu souhaite lire des nombres fournis sous forme de texte, utilise la classe Scanner
Bonjour,
en fait System.in.read() te retourne de l'ASCII.
Pour ton problème tu peux utiliser :
Code:
1
2
3
4
5
6
7
8
9
10 BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in)); String value = keyboard.readLine(); int a= -1; try { a= new Integer(value).intValue(); System.out.println(a); } catch(NumberFormatException e) { e.printStackTrace(); }
David.
Tu peux aussi te simplifier la tache en utilisant la classe Scanner:
Code:
1
2
3
4 Scanner sc = new Scanner(System.in); int i = sc.readInt(); System.out.println(" i = " + i);