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 :

Probleme simple avec la classe Integer


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 18
    Points : 15
    Points
    15
    Par défaut Probleme simple avec la classe Integer
    Bonjour,

    voila j'ai une erreur bizarre que je comprends pas trop, peut etre que c'est l'heure tardive, mais ca me parait assez étrange , alors voici la description du probleme. Tout simplement un code qui compile et s'execute sans probleme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import java.lang.Integer;
    import java.io.*;
     
    public class test
    {
    	public static void main(String[] args)
    {
    	String temp = "07";
    	System.out.println(" Le num est : " +((Integer.decode(temp)).intValue()));
    	}
    }

    et voici un autre code, qui se compile mais ne s'execute pas, et la seule difference vient du string temp , qui est " 08 " dans ce dernier exemple !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import java.lang.Integer;
    import java.io.*;
     
    public class test
    {
    	public static void main(String[] args)
    {
    	String temp = "08";
    	System.out.println(" Le num est : " +((Integer.decode(temp)).intValue()));
    	}
    }
    alors est ce quelqu'un saurait m'expliquer pourquoi ca ne marche pas avec " 08 " ? ( et ca marche pas aussi avec d'autre nombre comme 09 par exemple )

    any idea please ??

    Dernière précision, j'utilise linux 2.6.12 avec java 1.4.2-02 !!


    merci d'avance !!

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 159
    Points : 467
    Points
    467
    Par défaut
    Tu as une NumberFormatException?

    Moi en tout cas j'utilise plutot la méthode.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Integer.parseInt(String monstring)

  3. #3
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Essaye ce code qui permet de "catcher" une eventuelle exception :
    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
     
    import java.lang.Integer;
    import java.io.*;
     
    public class test
    {
    	public static void main(String[] args)
    {
    	String temp = "08";
    	  try{       
              System.out.println(" Le num est : " +((Integer.decode(temp)).intValue()));
    	   }catch(Exception ex){
                       ex.printStackTrace();
                 }
            }
    }
    Poste l'erreur que tu obtiens.
    C'est bizarre que ça ne marche qu'avec "07"...
    Sinon il est plus fréquent d'utiliser la méthode de yannart.

  4. #4
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Normalement si je ne m'abuse pas un entier doit être de la forme 89562001 et non 0232569, pour résumer il ne doit jamais y avoir de 0 en première position, sauf pour l'entier 0.

  5. #5
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    J'ai compris : en fait que tu fais précéder la valeur de 0 cela signifie que tu écris en octal or "08" n'est pas une écriture octale valide.

    Merci à thibault qui m'a mis sur la voie , enfin on espérant que ça soit ça la cause du problème.

  6. #6
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par afrikha
    J'ai compris : en fait que tu fais précéder la valeur de 0 cela signifie que tu écris en octal or "08" n'est pas une écriture octale valide.
    C'est bien cela ! La méthode decode() détermine la base à utiliser selon le format du nombre :
    • Tout nombre commenant par 0x, 0X ou # sera considéré comme un nombre en base 16.
    • Tout nombre commencant par 0 sera considéré comme un nombre en base 8.
    • Tout les autres seront considéré comme des nombres en base 10.
    C'est indiqué dans la doc donc pensez à y jeter un coup d'oeil lorsque vous avez un problème avec une méthode

    Si tu veux éviter cela il faut utiliser la méthode parseInt() qui te permet de spécifier la base à utiliser...

    a++

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    je pensais bien au hexadécimal, mais j'avais pas penser au octals !!

    En tout cas ca marche grace a vous ! Merci !!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/07/2014, 09h33
  2. probleme simple avec Singnal et Slots
    Par lefaucheur dans le forum Débuter
    Réponses: 4
    Dernier message: 22/08/2009, 12h28
  3. Réponses: 6
    Dernier message: 02/05/2007, 14h15
  4. probleme avec la classe calendar
    Par fatmax dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 04/10/2005, 18h04
  5. Probleme simple de debutant avec INSERT TO et UPDATE
    Par Tom_Cruise dans le forum Langage SQL
    Réponses: 5
    Dernier message: 26/08/2005, 09h15

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