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 :

java - parseInt


Sujet :

Langage Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Par défaut java - parseInt
    Salut à tous,
    voila je suis un grand débutant en java.

    J'ai un tp pour les cours qui me demande de vérifier un numéro de caractère (string).

    Dans l'idée :
    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
    public class tests 
     { 
        public static void main (String [] arg) 
         { 
             String val; val = Lire.S(); 
             System.out.println (val);
             String num; int num2;
             for (int i=0; i<6; i++) { 
                 num = val.charAt(i)-'0';
                 System.out.println (num);
                 num2 = parseInt(num, 10);
                 System.out.println (num2);
              }
          }
     }
    Bon je voulais déjà faire ca, mais en regardant de plus près, j'ai vu que ce ci ne marchat pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int num;
     num = parseInt(25); 
    System.out.println (num);
    A la compilation j'ai l'erreur suivante :
    C:\Java\tp4\test.java:8: cannot find symbol
    symbol : method parseInt(int)
    location: class test
    num = parseInt(25)

    Etant débutant, peut être qu'il me faut un fichier spécial à inclure ?? mais je ne sais pas..
    Voila pour ceux qui s'y connaissent, merci de m'aider car je comprends pas...

  2. #2
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Salut,

    parseInt(String) est une fonction statique présente dans la classe Integer, il faut donc que tu précèdes son appel par Integer. De plus, elle lève une exception dans le cas où la chaine de caractères passée en paramètre n'est pas un nombre "parsable".

    Ceci nous donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int num;
    try
    {
       num = Integer.parseInt("25");
       System.out.println (num);
    }catch(NumberFormatException e)
    {
      System.out.println("La chaine de caractères n'est pas un nombre parsable!!");
    }
    voilà voilà

    Fred

  3. #3
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    avec des guillements autour du "25" (si c pour faire un parse)

  4. #4
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Citation Envoyé par ®om
    avec des guillements autour du "25" (si c pour faire un parse)
    oupla erreur d'innatention, merci, c'est corrigé

    Fred

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Par défaut
    Integer ca y est automatiquement dans tous les compilateurs c'est ca ?
    Comment on peut connaitre les autres fonctions qu'il contient ?

    En fait à la place du "25" je veux mettre une variable.
    Faut quand meme laisser les guillemets ?

    *******

    En plus j'ai une nouvelle erreur :
    found : char
    required: java.lang.String
    num = val.charAt(i);

    Sur cette ligne :
    num = val.charAt(i);

    num est un string, i est un int

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Par défaut
    Un des nombreux intérêts du Java réside dans son systême de documentation : la javadoc... Sur le site de "java.sun.com", tu trouveras une documentation détaillées de toutes les APIs de base pour les différentes versions de Java disponibles (J2SE 1.5.0 dans ton cas, très certainement) à l'adresse suivante

    http://java.sun.com/j2se/1.5.0/docs/api/

    Un petit conseil pour la suite, garde cette adresse dans tes marque-pages car tu vas très certainement (et souvent) l'utiliser dans le futur.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Par défaut
    oui j'étais déja aller sur ce site...

    mais en fait je n'arrive pas à m'y retrouver
    exple : je recherche comment marche la fonction charAt, comment la trouver la dedans ? (il n'y a pas de champ de recherche...?)

    ou encore si juste je voulais trouver une fonction par sa description, mais sans connaitre son nom ??

    merci bcp pour votre aide

    PS : alors java.lang.String <== c'est la dedans charAt ?
    j'ai tenté ca lol :
    String.val.charAt(i);
    mais bien sur ca ne marche pas...

  8. #8
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    num = val.charAt(i);

    num est un string, i est un int
    Bah, dans la doc, tu regardes ce que renvoie charAt(i), et tu trouves que ça renvoie un char...
    Donc num ne doit pas être une String, mais un char...

    Le message d'erreur était clair, pourtant...

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Par défaut
    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
    char carac_solo;
    int transfo;
     
    for (int i=0; i<6; i++) {
    	carac_solo = val.charAt(i);
    		System.out.println (carac_solo);
     
    	try
    	{
    		transfo = Integer.parseInt(carac_solo);
    		System.out.println (transfo);
    	}
    	catch(NumberFormatException e)
    	{
    		System.out.println("La chaine de caractères n'est pas un nombre parsable!!");
    	}	
    }
    J'ai essayé de le faire tout à l'heure, mais si je transforme en char, j'ai un problème à cette ligne :
    transfo = Integer.parseInt(carac_solo);
    qui attends un string

    je suis désolé si je parrais lourd lol, mais c'est que j'arrive pas à utiliser ces deux fonctions en même temps

  10. #10
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Il faudrait que tu vois les types primitifs en java (il y en a 8, ça devrait aller vite), et la différence entre un type primitif et un Object, ainsi que l'Object très particulier qu'est String.
    Notamment, tu peux "convertir" n'importe quel type primitif (en particulier char) grâce aux méthodes statiques de la classe String, String.valueOf(...), ou encore, un petit "raccourci", faire:
    (concaténation avec une chaîne vide)

    Et ceci marche aussi avec les Objects, car il y a aussi une méthode String.valueOf(Object obj), qui se contente de faire obj.toString() (ou renvoie "null" si obj est null).

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Par défaut
    ... Je rajouterais même qu'il faut que tu saisisses le concept de la programmation objet. Comme le dit rom, en java, une String n'est pas un tableau de caractères à proprement parler, mais bel et bien un objet qui implémente des méthodes pour faciliter la vie du programmeur. Ton problême est très facilement résolvable si tu inspectes bien la javadoc de la classe Integer (définissant un objet entier, qui est donc différente du type primitif "int"). Tu y trouveras une méthode statique "parseInt" qui prend en paramètre un String, et qui renvoie un entier primitif "int". C'est exactement ce que tu veux faire. Si tu regardes un peu mieux sur la page de doc, tu t'apperçois qu'elle lève une exception lorsque la chaine passée en paramètre ne correspond pas à un nombre entier. Il te suffit donc de catcher cette exception pour la traiter comme tu sembles l'avoir compris.

    Moralité : Pas besoin de faire figurer de "char" ou de for() dans ton code. Java fait ça pour toi

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Par défaut
    En fait mon for est la pour le reste du tp... l'exercice conciste à vérifier un numéro de carte bleue (13 chiffres donc trop gros pour un int).
    Et c'est la mon problème, j'arrive à le faire passer en string, puis à convertir chaque char, mais dans tous les cas il me faudra recomposercette suite de nombre par le calcul :
    som = som*10 + val
    et lorsque somme dépassera la limite de int ca va planter...

    Bref je vois pas

    On est obligé d'appliquer les exeptions ?

  13. #13
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Si c'est juste pour comparer, pourquoi tu utilises pas la méthode .equals() de String?

    Pourquoi passer par int?

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Par défaut
    hum, j'vais te mettre quelques liens qui pourront peut-être t'aider :

    1
    2
    3

    pour convertir un caractère 'c' en int, tu fais comme ça : Integer.parseInt("" + c)

    * A partir de ta String, tu la transformes en char[]
    * ensuite tu crèes un int[] à partir de ce premier tableau à l'aide de l'astuce juste au dessus (et là, tu traites ta NumberFormatException)
    * puis tu fais ton algo de validation du numéro de carte bleu sur le int[]

    PS : Pour convertir un chiffre int en char, tu peux passer ton int en String puis prendre le premier élément de cette String, mais je doute que tu ais besoin d'utiliser cette méthode car si tu veux juste vérifier que le numéro de carte bleue de la String est correct, après ton algo de vérification, tu renvoies true ou false quoi...

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Par défaut
    Citation Envoyé par Drakkar
    * A partir de ta String, tu la transformes en char[]
    * ensuite tu crèes un int[] à partir de ce premier tableau à l'aide de l'astuce juste au dessus (et là, tu traites ta NumberFormatException)
    * puis tu fais ton algo de validation du numéro de carte bleu sur le int[]
    Il est donc possible de faire des calcul sur les différents éléments d'un tableau ?
    exple : imaginons que t[0]=1; t[1]=2; t[2]=3; Il est possible de faire 123/2 ? Même si mon tableau contient 30 cases ?

    Pour les trois liens je suis dessus, je vais essayer de comprendre le string (mes profs de m'ayant rien expliqué

    PS: ma fonction renvoie bien au final un bool

    encore merci pour votre aide

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Par défaut
    Bah... oui, bien sur. Dans ton cas (en supposant que 't' est ton int[]) :

    int numerateur=(t[0]*100)+(t[1]*10)+t[2];
    float résultat=(float)numerateur/2;

  17. #17
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Pas si ton tableau contient 30 cases (enfin, ça compilera, ça exécutera, mais le résultat sera faux, car dépassement de capacité de int).

    Si tu veux vraiment faire des opérations sur des grands entiers, utilise BigInteger...

  18. #18
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Citation Envoyé par Drakkar
    pour convertir un caractère 'c' en int, tu fais comme ça : Integer.parseInt("" + c)
    Que c'est compliqué ! Et ça, ça ne marche plus ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char c = 'x';
    int i = c;

  19. #19
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Citation Envoyé par herve91
    Que c'est compliqué ! Et ça, ça ne marche plus ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char c = 'x';
    int i = c;
    Si bien sur, mais admétons que tu fasse

    Alors
    ne garantit en rien que "n==1" soit vrai (en fait pour n'importe quel chiffre ca sera faux )

    Cordialement

    Fred

  20. #20
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par herve91
    Que c'est compliqué ! Et ça, ça ne marche plus ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char c = 'x';
    int i = c;
    Ça dépend qu'est-ce qu'on entend par convertir un caractère en int...

    Si tu veux qu'un entier stocké dans un char soit en int, effectivement, int i = 'x' ça marche...

    Mais si tu as le caractère '5' que tu veux transformer en entier 5, il faut "parser". Si c'est juste un caractère, utiliser parseInt c'est un peu "abuser" (d'ailleurs, selon que l'on dise "c'est abuser" ou "c'est abusé", ça n'a pas tout à fait le même sens - verbe ou adjectif -, quelle est la bonne manière de dire?). Dans le cas d'un caractère, il suffit de faire '5' - '0' et ça donne 5

Discussions similaires

  1. java.lang.NumberFormatException: null problème ParseInt
    Par janyoura dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 08/10/2012, 08h35
  2. le Java est la continuité du C++ ???
    Par Vincent PETIT dans le forum Débats sur le développement - Le Best Of
    Réponses: 33
    Dernier message: 25/08/2005, 20h17
  3. directx et java?? possible??
    Par jiraiya dans le forum DirectX
    Réponses: 3
    Dernier message: 09/07/2002, 19h55
  4. webcam : lire sur un port usb en c/c++ ou java. sous win. ?
    Par flo007 dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 24/05/2002, 23h24
  5. Service de nommage java C++
    Par Anonymous dans le forum CORBA
    Réponses: 3
    Dernier message: 15/04/2002, 12h48

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