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 :

Convertir un string en int


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 16
    Points : 5
    Points
    5
    Par défaut Convertir un string en int
    Salut à tous,

    Mon problème est simple, je rencontre un problème lors de la conversion d'un string en int.

    En fait, ma fonction marche très bien mais uniquement lorsque les strings que je passe en paramètre sont composés de chiffre... S'il y a une lettre ça plante et ça me sors une exception (ce qui est normal).

    voici le code que j'utilise :

    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
     
    	public static int verifNIROK(String nir, String cleNIR) 
    	{	
    		System.out.println ("DEBUG 1");
    		BigInteger dix = new BigInteger(nir); 
     
    		System.out.println ("DEBUG 2");
    		BigInteger temp = dix.mod(new BigInteger("97"));
     
    		System.out.println ("DEBUG 3");
    		int maCle = 97 - temp.intValue();
     
    		System.out.println("cle NIR : " + cleNIR + " maCle : " + maCle);
     
    		System.out.println ("DEBUG 4");
    		BigInteger osef = new BigInteger(cleNIR);
     
    		if (osef.intValue() == maCle)
    			return 0;
    		else 
    			return 1;
    	}
    j'ai essayé de passer par les formats mais à vrai dire je m'en sors pas trop.

    HELP

    merci d'avance de vos réponses.

  2. #2
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 8
    Points : 11
    Points
    11
    Par défaut Expressions régulières
    Tu peux utiliser une expression régulière au début de ta méthode pour vérifier que ta variable ne contient que des chiffres, la syntaxe étant la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boolean isChiffres = cleNIR.matches("^[0-9]+$");
    Les symboles signifient ceci :
    / ouverture de regexp
    ^ debut de chaine
    [0-9] n'importe quel chiffre entre 0 et 9
    + plusieurs fois
    $ fin de chaine
    / fin de regexp


    Une autre méthode étant de capturer l'exception "NumberFormatException" générée et d'afficher un message mais c'est moins adapté à ton besoin j'ai l'impression.

    Bon courage

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    d'abord, merci pour ta réponse.

    Mais je pense m'être mal expliqué... J'aimerais que ma fonction marche quel que soit le string que je lui passe en paramètre (et cela passe par une conversion de string que je n'arrive pas à réaliser.

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 8
    Points : 11
    Points
    11
    Par défaut
    Tu ne peux pas construire un BigInteger à partir d'une string qui contient au moins une lettre, ça va lancer une NumberFormatException.
    Tu peux tout de même le faire mais il te faut capturer l'exception avec une instruction try/catch :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try{
    
    BigInteger dix = new BigInteger(nir); ................
    } catch(NumberFormatException exception){
    //traitement à réaliser en cas de NumberFormatException System.out.println("Conversion en BigInteger impossible : " + exception.getMessage()); .................
    }

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Je m'en doutais un peu...
    Merci, je vais me débrouiller autrement

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Il y a un truc que je saisis pas trop, c'est comment tu comptes faire des divisions ou des soustractions s'il y a des lettres dans tes nombres.

    C'est pas en base 10, c'est ça ? Si c'est le cas, il y a un constructeur de BigInteger qui permet de spécifier la base du nombre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [C#] Convertir une String en Int ?
    Par Kylen dans le forum ASP.NET
    Réponses: 12
    Dernier message: 11/04/2012, 10h59
  2. Convertir une string en int
    Par zoltix dans le forum C#
    Réponses: 4
    Dernier message: 02/06/2011, 19h37
  3. Comment convertir un String en int[]
    Par mundu dans le forum Langage
    Réponses: 3
    Dernier message: 20/01/2009, 00h12
  4. Convertir un String en Int
    Par Gr@nd@x dans le forum Langage
    Réponses: 4
    Dernier message: 03/04/2007, 22h40
  5. convertir un String en int
    Par Sakapatate dans le forum Langage
    Réponses: 4
    Dernier message: 07/12/2006, 14h29

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