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

avec Java Discussion :

identifier type d'une variable


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Points : 66
    Points
    66
    Par défaut identifier type d'une variable
    Bonjour, j'ai une variable du type :
    String chaine = "test";
    comment pourrais-je tester le type de la variable "chaine"?
    cela me sert à éviter de faire un cast de ma chaine en entier (Integer.parseInt(chaine)).
    Merci de votre aide.

  2. #2
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Points : 88
    Points
    88
    Par défaut
    La variable chaine étant déclarée comme String, elle ne pourra être que de type String (ou bien prendre la valeur null).

    Si tu cherches à détecter quel est le contenu de la chaîne, tu peux utiliser la classe java.util.Scanner et ses méthodes comme hasNextInt(), hasNextLong(), etc.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Points : 66
    Points
    66
    Par défaut
    si par exemple je fais :
    int entier = Integer.parseInt(chaine);
    si ma chaine est "22", alors mon entier sera le nombre 22!
    je ne connais pas ces méthodes, sont elles toujours valable pour vérifier le type de "chaine" ?

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 619
    Points
    21 619
    Par défaut
    Citation Envoyé par bernidupont Voir le message
    si par exemple je fais :
    int entier = Integer.parseInt(chaine);
    si ma chaine est "22", alors mon entier sera le nombre 22!
    je ne connais pas ces méthodes, sont elles toujours valable pour vérifier le type de "chaine" ?
    Cette méthode ne "vérifie" pas de "type". Cette méthode suppose que le contenu de la chaîne peut être interprété comme un nombre, et calcule (ont dit, "parse",) le nombre en question. Si la chaîne ne représente pas vraiment un nombre, cette méthode génère une exception.

    Bon, du coup ça veut dire que si tu veux vérifier que la chaîne contient bien un nombre, eh bien tu peux appeler cette méthode : s'il y a exception ce n'était pas un nombre. Si tout s'exécute normalement c'était bien un nombre et tu sais même lequel.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Points : 459
    Points
    459
    Par défaut
    Salut,

    Note tout de même que le type d'une variable peut être:
    -String
    -byte
    -short
    -int
    -etc

    Cordialement,

    Dan

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Quelle est la question exactement ?
    Tu veux vérifier si une chaine contient bien un nombre ou effectivement sont type ?
    Dans le premier cas, le plus simple est de tenter la conversion et de traiter l'exception.
    Dans le second cas, tu as instanceof qui te permet de tester le type de la classe.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Points : 66
    Points
    66
    Par défaut
    oui je veux vérifier son type, pourrais tu m'indiquer stp comment utiliser instanceof.
    Merci à tout le monde pour votre aide

  8. #8
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Points : 88
    Points
    88
    Par défaut
    Comme je l'ai expliqué précédemment, si la variable chaine est déclarée en tant que String, elle ne pourra être que de type String. Il est donc inutile dans ce cas de tester quel est le type. Le seul cas particulier est que la chaîne déclarée ait null comme valeur.

    Par exemple, le code suivant affichera chaine est de type String.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    String chaine = "42";
     
    if(chaine instanceof String) {
       System.out.println("chaine est de type String");
    }
    else {
       System.out.println("chaine n'est pas de type String");
    }
    Je pense que tu n'as pas bien compris la notion de type.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Points : 66
    Points
    66
    Par défaut
    oui c'est vrai..
    en fait je voudrais empêcher d'enregistrer un String à la place d'un int dans ma base de donnée. il faudrait donc que je traite l'exception.
    Ainsi si j'effectue ma conversion :

    String chaine= "22";
    int i = Integer.parseInt();

    et que je génère une exception alors je saurais que l'entier saisi n'est pa correct.
    Sauriez vous comment faire cela ?

  10. #10
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Points : 88
    Points
    88
    Par défaut
    Integer.parseInt() lève une exception de type java.lang.NumberFormatException si la chaîne passée en paramètre n'est pas au bon format. Il suffit de traiter l'exception.

    Si tu ne sais pas comment traiter les exceptions, commence par lire la FAQ.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Points : 66
    Points
    66
    Par défaut
    voilà la réponse :

    // on vérifier que le nombre entré est bien un entier
    try {
    nombre = Integer.parseInt(chaine.getText());
    } catch (NumberFormatException exc){
    JOptionPane.showMessageDialog(new Frame(),"Veuillez saisir un nombre correct!" );
    System.exit(-1);
    }

    merci beaucoup tout le monde et particulièrement à Desintegr qui m'a mis dans la bonne voie ;-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [c++] contrôle du type d'une variable
    Par TERRIBLE dans le forum C++
    Réponses: 2
    Dernier message: 10/04/2006, 20h50
  2. determiner le type d'une variable
    Par Mokhtar BEN MESSAOUD dans le forum Langage
    Réponses: 1
    Dernier message: 14/03/2006, 17h11
  3. [VBA-E]Renvoyer le type d'une variable
    Par alexxx69 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/02/2006, 18h07
  4. Connaitre le type d'une variable
    Par mic79 dans le forum Langage
    Réponses: 2
    Dernier message: 04/01/2006, 15h42
  5. Changer el type d'une variable sql sous postgre8/admin
    Par smag dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 24/08/2005, 12h31

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