Number format exception
Zabou
-
Zabou -
Zabou -
Bonjour à tous :)
Je débute en java, et je viens d'effectuer un exercice sur la boucle WHILE
Après avoir effectué mon codage :
Je lance la compilation du programme mais le message d'erreur s'affiche : java.lang.NumberFormatException . Cela fait déjà un moment que je cherche ce qui ne va pas dans mon code mais que je ne trouve pas pourquoi même lorsque j'entre des chiffres ce message s'affiche ?
Je vous remercie à tous pour votre aide
Je débute en java, et je viens d'effectuer un exercice sur la boucle WHILE
Après avoir effectué mon codage :
package classeouverte; public class WhileUn { public static void main (String [] param) throws java.io.IOException { String tmp = " "; char C = '\0'; int valeur; System.out.print("Entrez des chiffres et appuyez sur "); System.out.println("La touche Entrée, pour valider la saisie : "); while (C != '\n') { C = (char) System.in.read(); if (C != '\n') tmp = tmp + C; } System.out.println("Vous avez entré : " + tmp); valeur = Integer.parseInt(tmp); System.out.println("C'est à dire : " +valeur+ " en entier" ); } }
Je lance la compilation du programme mais le message d'erreur s'affiche : java.lang.NumberFormatException . Cela fait déjà un moment que je cherche ce qui ne va pas dans mon code mais que je ne trouve pas pourquoi même lorsque j'entre des chiffres ce message s'affiche ?
Je vous remercie à tous pour votre aide
A voir également:
- Number format exception
- Format epub - Guide
- Format factory - Télécharger - Conversion & Codecs
- Hp usb disk storage format tool - Télécharger - Stockage
- Format apfs - Guide
- Format bin - Guide
1 réponse
Bonjour,
Le problème c'est
Remarque : puisque tu lis les chiffres un à un, tu pourrais faire mieux qu'un parseInt en calculant directement le nombre, sans passer par un String intermédiaire.
Le problème c'est
Integer.parseInt(tmp)car la valeur de
tmpn'est pas un nombre, mais une concaténation de
" "(ligne 8), et des différents
C(ligne 23), dont le
'\r'que tu n'as pas exclu.
Remarque : puisque tu lis les chiffres un à un, tu pourrais faire mieux qu'un parseInt en calculant directement le nombre, sans passer par un String intermédiaire.
Je suis sous MacOS, je pensais donc qu'exclure '\r' n'était pas nécessaire puisque la touche entrée sur Mac n'est caractérisée que par la touche '\n' , si je ne me trompe ?
Désolée si je parais gourde mais j'en suis à deux semaines d'auto-formation. Certaines choses me paraissent encore abstraites.
Deuxième point que j'ai oublié de préciser mais qui visiblement était important de l'être, l'exercice sur la boucle while qui m'a menée à faire ce codage insérait également une nouvelle méthode, celle du BufferedReader dont je ne maîtrise encore rien. L'exercice porte sur "apprendre à écrire une boucle while et de comprendre comment réaliser la saisie d'un entier au clavier sans utiliser la classe Scanner"(seule classe que je maitrise jusqu'alors)
Dans tous les cas, je te remercie d'avoir répondu présent et de m'avoir apporté ton aide !
Remarque : dans un programme Java - multiplate-forme - il vaudrait mieux éviter les spécificités d'un OS.
Quant au BufferedReader (pas très utile en vrai), il te permettrait de faire un readLine comme le Scanner, ce serait plus simple.
Voir la documentation : https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/BufferedReader.html
Pour le lien vers une documentation, également !
String tmp = " "
Alors que NON, il nous la fallait nulle cette variable, et donc sans espace :
String tmp = ""
Voilà !
Merci dans tous les cas KX