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 :

Savoir si une chaine est numérique ou non


Sujet :

avec Java

  1. #1
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut Savoir si une chaine est numérique ou non
    Bonjour

    Dans la FAQ, j'ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parseInt("Kona", 27) = numérique
    Mais quand je remplace "Kona" par parseInt("open" , 27) = 491018
    et quand je remplace "open" par une chaine qui contient "open" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parseInt (String string, 27)
    J'obtiens une exception IllegalArgumentException. Je butte donc sur mon problème: sachant que ma chaine peut représenter un nom ou un nombre, comment savoir si je suis dans un cas ou dans l'autre? Ce sera

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 553
    Points : 21 612
    Points
    21 612
    Par défaut
    Je butte donc sur mon problème: sachant que ma chaine peut représenter un nom ou un nombre, comment savoir si je suis dans un cas ou dans l'autre?
    Tu fais l'appel. Si la chaîne passe, il n'y a pas de IllegalArgumentException. Si elle ne passe pas, il y a IllegalArgumentException.

    Si tu veux vraiment éviter le IllegalArgumentException, tu peux vérifier si ta chaîne respecte une expression régulière.

    En base 10, c'est l'expression : "[0-9]+".
    En base 8, "[0-7]+".
    En base 16, "[0-9a-fA-F]+".
    En base 36, "[0-9a-zA-Z]+".

    Et donc en base 27, "[0-9a-qA-Q]+".

    Tu peux aussi faire ta propre méthode qui vérifie que la chaîne ne contient que des chiffres valides avec la base, avant d'essayer de la parser, si tu veux. Mais je ne crois pas que ce soit fourni avec la bibliothèque de base Java.
    En même temps, il faut être logique : ou bien la chaîne peut être parsée, ou bien c'est une erreur. Et quand il y a erreur, c'est normal de lancer une exception.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut Merci
    Bonjour

    Je retiens que la base 36 permet de démarrer un parsing.
    Dans mon cas j'ai soit des valeurs numériques 1 à 4
    soit du texte,
    mis je n'ai pas de texte mélangé à des nombres ou alors très loin dans la phrase, et donc il suffit de tester le premier terme de la suite, si il est numérique alors la chaine est numérique sinon il est textuel et la chaîne doit être traitée comme telle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    String[] toBeTested.split( maChaîne);
    // dans toBeTested[0] j'ai un mot ou une valeur numérique
    if( Integer.parsInt( toBeTested[0], 36) < 10)
       //c'est un nombre et on peut le traiter comme tel
    else
       //c'est une chaîne et il faut la traiter comme telle
    Je clos, c'est

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

Discussions similaires

  1. Savoir si une année est bissextile ou non
    Par pottiez dans le forum Télécharger
    Réponses: 0
    Dernier message: 30/11/2010, 16h17
  2. Comment tester si une chaine est numérique
    Par biyemassi dans le forum Sybase
    Réponses: 2
    Dernier message: 05/05/2010, 10h17
  3. Comment savoir si une contrainte est active ou non.
    Par dim07 dans le forum Développement
    Réponses: 3
    Dernier message: 02/09/2009, 21h03
  4. Savoir si une personne est connectée ou non
    Par MANU_2 dans le forum Langage
    Réponses: 5
    Dernier message: 17/03/2008, 14h06
  5. Réponses: 3
    Dernier message: 17/10/2006, 10h55

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