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 :

souci avec Integer.parseInt


Sujet :

avec Java

  1. #1
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 167
    Points : 76
    Points
    76
    Par défaut souci avec Integer.parseInt
    Bonsoir,

    J'ai essayé de travailler avec Integer.parseInt, mais j'ai obtenu une erreur lors de l'exécution de programme, voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String code="12423 11524 7243 7459 14303 6127 10964 16399";
        int message=Integer.parseInt(code);
    l'erreur affichée est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Exception in thread "main" java.lang.NumberFormatException: For input string: "12423 11524 7243 7459 14303 6127 10964 16399"
            at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
            at java.lang.Integer.parseInt(Integer.java:456)
            at java.lang.Integer.parseInt(Integer.java:497)
            at newpackage.mainnn.main(mainnn.java:26)
    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    t'attends quoi comme réponse à parse int avec ton truc là?

  3. #3
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par amnass Voir le message
    Bonsoir,

    J'ai essayé de travailler avec Integer.parseInt, mais j'ai obtenu une erreur lors de l'exécution de programme, voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String code="12423 11524 7243 7459 14303 6127 10964 16399";
        int message=Integer.parseInt(code);
    l'erreur affichée est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Exception in thread "main" java.lang.NumberFormatException: For input string: "12423 11524 7243 7459 14303 6127 10964 16399"
            at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
            at java.lang.Integer.parseInt(Integer.java:456)
            at java.lang.Integer.parseInt(Integer.java:497)
            at newpackage.mainnn.main(mainnn.java:26)
    Merci d'avance
    Tu doit mettre ton code entre Try et Catch comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Try{
    int message=Integer.parseInt(code);
    }catch(NumberFormatException e)
    {e.printstack();
    }
    Après je ne sais pas tu veut faire quoi ...

  4. #4
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 167
    Points : 76
    Points
    76
    Par défaut
    Merci wajdy pour l'aide, en fait j'ai un très long programme, j'ai présenté ici seulement les lignes auxquelles se trouve l'erreur, voici maintenant la modification que j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    String code = "12423 11524 7243 7459 14303 6127 10964 16399";
        try {
                //String code="12423";
                int message = Integer.parseInt(code);
                System.out.println(message);
            } catch (NumberFormatException numberFormatException) {
            }
    Mais, lors de l'exécution j'ai rien obtenu, ni erreur, ni affichage du résultat. En fait, lorsque j'ai essayé par et pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String code = "12423 11524 7243 7459 14303 6127 10964 16399";
    Tout ça marche bien. C'est à dire, le problème peut être du de l'espace. Mais, dans mon programme, je dois mettre ce dernier String, car il s'agit d'un texte codé qu'on doit le déchiffrer par l'algorithme RSA.
    Donc, mon problème n'est pas encore résolu.

  5. #5
    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 amnass Voir le message
    Mais, lors de l'exécution j'ai rien obtenu, ni erreur, ni affichage du résultat.
    En même temps, tu catch l'erreur et tu l'ignores complètement... donc c'est logique que tu n'obtiennes pas d'erreur...

    Il faut avoir une raison pour traiter une exception, et ne surtout pas se limiter à un traitement bidon style "rien du tout" ou un simple e.printStackTrace(). On doit avoir une bonne raison de catcher une exception !!!

    Citation Envoyé par amnass Voir le message
    C'est à dire, le problème peut être du de l'espace.
    L'espace est un problème en effet... Mais également la longueur du nombre qui fait qu'il ne peut pas tenir dans un int... ni dans un long !

    Citation Envoyé par amnass Voir le message
    Mais, dans mon programme, je dois mettre ce dernier String, car il s'agit d'un texte codé qu'on doit le déchiffrer par l'algorithme RSA.
    Je ne connais pas l'algo du RSA... mais je doute qu'il faille convertir une telle chaine en nombre comme ceci !

    Vérifie bien l'algo...

    a++

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ca m'a plutot l'air d'etre un ensemble de nombre séparés par des espaces. Tu dois donc les séparer avant de parser chaque morceau individuellement. Si tu veux un nombre qui représente toute cette chaine il va falloir retirer les espaces, puis ensuite passer par un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new BigDecimal(chaine)

  7. #7
    Membre averti Avatar de clubist
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 217
    Points : 301
    Points
    301
    Par défaut
    en faite ParseInt essaie de changer le String en un entier si c'est possible.

    Bon le string entré en paramètre contient des espaces donc il aura une erreur parseInt ne peut pas traduire cet espace en entier

    solution:

    Avant d'utiliser parseInt, tu doit extraire chaque nombre à part en éliminant les espaces et après appliquez parseInt pour chaque nombre

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    si c'est pour decodé du RSA

    il te fait split ta String et crée un tableau car dans ton exemple chaque groupe de 5 digits représente une valeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            String code = "12423 11524 7243 7459 14303 6127 10964 16399";
            String[] valus = code.split(" ");
            int[] message = new int[valus.length];
            for (int i = 0; i < valus.length; i++) {
                message[i] = Integer.parseInt(valus[i]);
                System.out.println(message[i]);
            }

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    765
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 765
    Points : 1 036
    Points
    1 036
    Par défaut
    Bonjour,

    Si tu travailles avec un algorithme de cryptage RSA, il y a deux ou trois hypothèses pour ta chaine :

    Soit c'est un element de clé et tu dois utiliser les méthodes adhoc pour créer les objets correspondants.
    RSA utilise des clés très longue ce qui justifie un entier aussi long.

    Exemple de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    KeyFactory kf = KeyFactory.getInstance("RSA");
    RSAPublicKeySpec rpks = new RSAPublicKeySpec(new BigInteger("  ici il faut mettre le modulo public "), new BigInteger(" ici il faut mettre la clé publique ")); 
    RSAPublicKey rpk = (RSAPublicKey)kf.generatePublic(rpks);    
     
    RSAPrivateKeySpec rprivks = new RSAPrivateKeySpec(new BigInteger("  ici il faut mettre le modulo privé        "), new BigInteger(" ici il faut mettre la clé privée "));
    RSAPrivateKey privKey = (RSAPrivateKey) kf.generatePrivate(rprivks);

    Soit c'est ton flux crypté et il est un peu bizzare, en principe un flux est en byte[].

    Il faut en dire plus.

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Points : 268
    Points
    268
    Par défaut
    Bonjour,

    Pourquoi ne pas faire seulement un traitement sur la chaine de caractère a étudier en enlevant tous les espaces?
    Ce qui donnerait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     String code = "1242311524724374591430361271096416399";

  11. #11
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 47
    Points : 39
    Points
    39
    Par défaut
    Bonjour
    Il y'a deux problemes avec ton code:
    1- Les espaces que tu peut enlever avec split(" ")
    2- Si tu fais sauter les espaces tu obtiens un entier trop grand pour un int.
    Tu peut essayer de declarer code comme un tableau de String et faire une boucle pour les convertir un à un.
    code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String[] code={"12423" , "11524", "7243", "7459", "14303", "6127", "10964", "16399"};
    		int[]message=new int[code.length];
    		for(int i=0;i<code.length;i++){
    		 message[i]=Integer.parseInt(code[i]);
    		}
    		 Afficher(message);
    Il faut écrire la méthode Afficher.
    coulane!

  12. #12
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 167
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par rolfone Voir le message
    si c'est pour decodé du RSA

    il te fait split ta String et crée un tableau car dans ton exemple chaque groupe de 5 digits représente une valeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            String code = "12423 11524 7243 7459 14303 6127 10964 16399";
            String[] valus = code.split(" ");
            int[] message = new int[valus.length];
            for (int i = 0; i < valus.length; i++) {
                message[i] = Integer.parseInt(valus[i]);
                System.out.println(message[i]);
            }
    Je vous remercie pour l'aide précieuse, mon problème est maintenant résolu.
    Si tu travailles avec un algorithme de cryptage RSA, il y a deux ou trois hypothèses pour ta chaine :

    Soit c'est un element de clé et tu dois utiliser les méthodes adhoc pour créer les objets correspondants.
    RSA utilise des clés très longue ce qui justifie un entier aussi long.

    Exemple de code :

    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    KeyFactory kf = KeyFactory.getInstance("RSA");
    RSAPublicKeySpec rpks = new RSAPublicKeySpec(new BigInteger("  ici il faut mettre le modulo public "), new BigInteger(" ici il faut mettre la clé publique ")); 
    RSAPublicKey rpk = (RSAPublicKey)kf.generatePublic(rpks);    
     
    RSAPrivateKeySpec rprivks = new RSAPrivateKeySpec(new BigInteger("  ici il faut mettre le modulo privé        "), new BigInteger(" ici il faut mettre la clé privée "));
    RSAPrivateKey privKey = (RSAPrivateKey) kf.generatePrivate(rprivks);
    Merci pour ces informations et merci aussi aux autres.

  13. #13
    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,

    Citation de coulane:
    "Il y'a deux problemes avec ton code:
    1- Les espaces que tu peut enlever avec split(" ")
    2- Si tu fais sauter les espaces tu obtiens un entier trop grand pour un int."

    Une petite précision concernant split:

    split n'enlève pas les espaces mais éclate code en 8 sous chaînes dans un tableaux de String...

    Cordialement,

    Dan

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

Discussions similaires

  1. Probleme avec Integer.parseint
    Par melek_net dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 21/11/2008, 19h24
  2. quelques soucis avec word 2000
    Par ramchou dans le forum Word
    Réponses: 3
    Dernier message: 06/09/2004, 18h13
  3. souci avec un algorithme
    Par slider16 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/03/2004, 17h17
  4. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52
  5. Réponses: 4
    Dernier message: 16/02/2003, 12h16

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