amine1234Z
Messages postés134Date d'inscriptionsamedi 26 mai 2007StatutMembreDernière intervention31 mai 2010
-
21 mai 2008 à 00:42
verdy_p
Messages postés202Date d'inscriptionvendredi 27 janvier 2006StatutMembreDernière intervention29 janvier 2019
-
23 mai 2008 à 00:31
Salut
j'ai fait comme ca:
int t1=0,i1=0,P1=0;
-------------------------------------------------------------------------
i1 = Integer.parseInt(MonText.getText().trim());// rendre le contenu de "MonText" en entie.
--------------------------------------------------------------------------
aprés l'initialisation j'affecte
i1=2.2
et P1=300.02
et
t1=i1*P1;
MAIS
l'errur ci dessus ce lance;
------------------------------------------------------
java.lang.NumberFormatException: For input string: "2,2"
...
....etc
------------------------------------------------------
peut etre il faut convertire le contenu de "MonText" en float et il une autre manier de passer vers float?
et comment en ecrit la vergule dans les nombre réél est ce que avec le point (.) ou avec la vergule nomramel (,) ?
MERCI
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 21 mai 2008 à 06:56
Salut,
Forcément, "2,2" n'est ni un float, et encore moins un entier !
Convertit le d'abord en un nombre pouvant être convertit (remplace la virgule de notre format français, en un point du format américain, ce qui sera déjà plus simple à convertir !).
Ensuite, convertit ce "nouveau" nombre en Float, et récupère sa valeur entière :
i1 = Float.parseFloat(MonText.getText().trim().replace(",", ".")).intValue();
______________________________________
DarK Sidious
verdy_p
Messages postés202Date d'inscriptionvendredi 27 janvier 2006StatutMembreDernière intervention29 janvier 2019 22 mai 2008 à 18:54
Sans même faire appel à String.replace(...), il suffisait d'indiquer la "Locale" à utiliser pour la conversion (Locale.US ou Locale.FRANCE par exemple).
Ceci dit, si c'est utilisateur qui a tapé la valeur, il a peut-être lui-même saisi une virgule ou un point, et String.replace(".", ",") permet de ne pas tenir compte de cette différence.
Les fonctions parseXxx() ou les constructeurs comme Float(String) utilisent par défaut la locale du système local. Cette locale n'est pas nécessairement la locale anglophone (cela dépend des paramètres de démarrage de la VM Java ou de son environnement dans un navigateur ou une ligne de commande de l'espace utilisateur local), mais on peut préciser explicitement cette locale (ou encore le paramètre de codage de texte qui n'est pas nécessairement la page de code 1252 ou même ISO 8859-1, même sous Windows en version française! Cela dépend aussi de l'OS support et de paramères d'installation de la VM)
La seule chose qui semble sure est que les locales US et française seront supportées, de même que les codages US-ASCI, ISO-8859-1, et Unicode UTF-8 ou UTF-16, ainsi qu'un codage spécifique à la plateforme locale. Tout le reste n'est pas garanti et varie d'une VM à l'autre ou d'un utilisateur à l'autre (et aussi de l'installation ou non des librairies d'internationalisation lors de l'installation de Java sur le poste client ou sur un serveur d'application JSP)
Pour répondre à ta dernière question: ce n'est donc ni forcément le point ni la virgule, car cela dépend de la "Locale" utilisée et c'est à toi de la préciser si nécessaire dans ton code (méfies-toi des "Locales" par défaut, si tu l'oublies c'est le meilleur moyen d'avoir une appli qui fonctionne chez certains et pas chez d'autres: nombre d'applis américaines supposent une locale US mais c'est souvent faux sur nos PCs ou Macs ou même nos serveurs d'applications). Consulte les Javadoc pour voir quelles fonctions de conversion de texte utilisent la locale par défaut et comment préciser une autre locale si nécessaire.
amine1234Z
Messages postés134Date d'inscriptionsamedi 26 mai 2007StatutMembreDernière intervention31 mai 20104 23 mai 2008 à 00:20
Salut
wow merci beaucoup [auteur/VERDYP/678937.aspx verdy_p] pour la grand utile reponse
MAIS est ce que je vais l'appeler just comme ça :
Locale.FRANCE
je sais pas ce que je doit faire, je suis un débutant en JAVA.
une autre question et il possible d'utiliser cette "locale" dans le cas ou j'ai tapper un
faut mot ou une fausse phrase dans une zone de text, comme au niveau du word ??
c'est a dire si j'ai tapper un faut mot, il me donne la possibilité de la correcté.
verdy_p
Messages postés202Date d'inscriptionvendredi 27 janvier 2006StatutMembreDernière intervention29 janvier 2019 23 mai 2008 à 00:31
regarde javadoc pour la classe de base du JRE : java.util.Locale
ensuite, regarde les classes qui réalisent les conversions de chaines: partout où cela peut dépendre d'une locale, les méthodes qui utilisaient une locale par défaut acceptent aussi qu'on précise la locale à utiliser.
Donc:
import java.util.Locale;
...
puis référence Locale.US ou Locale.FRANCE explicitement suivant ce que tu attends.
Fais la même chose concernant les encodages: le codage local natif du système n'est pas forcément portable, notamment celui utilisé pour coder les noms de fichiers locaux, ou pour écrire dans des ficheirs texte locaux. Il faut souvent préciser une paramètre optionnel: je conseille vivement de ne plus utiliser que "UTF-8" et d'abandonner le codage système natif par défaut qui persiste uniquement pour compatibilité. D'ailleurs je conseille aussi de compiler le code Java avec les warnings activés sur les méthodes obsolètes qui utilisent encore un codage système local par défaut, sachant que le jeux de caractère natif 8 bits local diffère d'un pays à l'autre même pour la même version de Windows: le même programme avec le même source et compilé de façon identique pour la même version de java risque de ne pas marcher pareil d'une machine à l'autre suivant la Locale alors même que le programme manipule exactement les mêmes fichiers de données et se connecte aux mêmes serveurs distants (la Locale comprend des paramètres dépendant de choix de 'lu'ilisteur courant ou de paramètres système purement locaux comme la langue, l'écriture utilisée, le jeu de caractère natif du système de fichier local, les conventions sur les nombres et dates, etc.)