IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Je veux tester que ce String est bien un double


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de poulette3000
    Profil pro
    Inscrit en
    Août 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 183
    Par défaut Je veux tester que ce String est bien un double
    Bonjour ,

    je dois tester que phObj est bien un nombre eventuellemetn à virgule
    l'utilisateur a rentré un string au prealable
    J'avais pensé à ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    this.ph_obj = sc.nextLine(); // lecture de la valeur ph_obj
    	 	this.ph_obj.trim();
    	 	double f = Double.parseDouble(ph_obj);
    		{if (f ==applet.getLFT().getPhObj() )
    {et la suite ...............}
    Exception in thread "Thread-4" java.lang.NumberFormatException: For input string: "1aaa.0"
    at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)


    mais ça renvoit toujorus une erreur s'il a rentré "aaaa"

  2. #2
    Membre Expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Par défaut
    Salut,

    Ça me parait logique ^^
    Tu lui demandes de transformer une chaîne en nombre. Chose qu'il peut faire si la chaîne en question est réellement un nombre Par contre, c'est à toi de gérer l'exception NumberFormatException. Si l'utilisateur a rentré une chaîne qui n'est pas un nombre, alors il te faudrait lui demander de re-rentrer une autre chaîne qui soit cette fois si un nombre ^^.

  3. #3
    Membre confirmé Avatar de poulette3000
    Profil pro
    Inscrit en
    Août 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 183
    Par défaut
    bah meme si ça parait logique : ça ne marche pas

    J'en ai trouvé un deuxieme mais tester le ça renvoit toujours false
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    public class FloatTester {
     
    	public static boolean isValidFloat(String str) {
    		boolean isValid = false;
    		try {
    			Integer newInput = Integer.valueOf(str);
    			float i = newInput.floatValue();
    			isValid = true;
    		} finally {
    			return isValid;
    		}
    	}
     
    	public static void main(String[] args) {
    		String toTest = "1.00";
    		System.out.println(toTest + " est-il un entier valide? " + FloatTester.isValidFloat(toTest));
    		toTest = "125r";
    		System.out.println(toTest + " est-il un entier valide? " + FloatTester.isValidFloat(toTest));
    		toTest = "rez";
    		System.out.println(toTest + " est-il un entier valide? " + FloatTester.isValidFloat(toTest));
    		toTest = "1.23";
    		System.out.println(toTest + " est-il un entier valide? " + FloatTester.isValidFloat(toTest));
    	}
    }

  4. #4
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    Essaye un truc comme ca


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    this.ph_obj = sc.nextLine(); // lecture de la valeur ph_obj
             this.ph_obj.trim();
    boolean  bEstNombre= true;
    double f= 0.0;
            try {
                  f = Double.parseDouble(ph_obj);
                  }
           catch (NumberFormatException e)
                  {
                 Sytem.out.println("Ce n'est pas un nombre");
                 bEstNombre= false;
                 }
     
    if ( bEstNombre) 
    { 
    // montraitement
    }

  5. #5
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Par défaut
    Tu as la réponse au pourquoi dans ton code : " est-il un entier valide? ".

    Ton code vérifie que c'est bien un entier, pas un double ou un flottant...

    Donc il est logique que "1.00" ne renvoie pas vrai, vu que c'est un Float

    Par contre tu peux adapter ton code pour qu'il vérifie si c'est un "bon" Float en utilisant Float.valueOf a la place de Integer.valueOf


    [EDIT:] Yeah, 3 en meme temps
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Ton premier code est presque parfais : il suffit de traiter l'exception pour déceler les mauvaises saisies :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	public static boolean isValidFloat(String str) {
    		try {
    			Double.parseDouble(str);
    		} catch (NumberFormatException nfe) {
    			return false;
    		}
    		return true;		
    	}
    Quand au premier je ne pourrais que te le déconseiller : ce n'est pas très propre de faire un return dans un bloc finally De plus il utilise Integer à la place de Double !!!



    Enfin tu peux te tourner vers les DecimalFormat pour une saisie selon la locale (voir la FAQ !)

    a++

Discussions similaires

  1. [FLASH MX] Tester si l'image est bien chargé
    Par xtaze dans le forum Flash
    Réponses: 2
    Dernier message: 11/10/2006, 09h09
  2. [C# 2.0]Tester si le string est une date
    Par totoen dans le forum Windows Forms
    Réponses: 7
    Dernier message: 25/04/2006, 16h19
  3. [VBS] Fileexit tester si un fichier est bien deplacé
    Par Corben dans le forum VBScript
    Réponses: 12
    Dernier message: 12/04/2006, 18h17
  4. Comment tester qu'une base est bien présente?
    Par xilay dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/10/2005, 16h26
  5. Comment tester qu'un objet String est bien initialisé
    Par Jones dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 17/09/2004, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo