VIVEZ LE
FOOTBALL !

Posez votre question Signaler

[Java] Integer.parseInt [Résolu]

khaoula.85 448Messages postés 20 février 2008Date d'inscription - Dernière réponse le 23 mars 2011 à 06:17
Bonjour,
J'essaye d'exécuter ce petit code de conversion des chaines de caractères en entiers, mais il m'affiche une erreur que je ne peux pas corriger.
public class Conversion {
   // point d'entrée général
   public static void main (String[] args) {
	String s1 = "1";
	args[0]=s1;
	args[1]=s2;
	String s2 = "2";
	int i=Integer.parseInt(args[0])+ Integer.parseInt(args[1]);
      System.out.println (i+" ") ;
   }//End main
}

Merci de m'avoir aider :)
P.S. je débute en Kawa ;)
Lire la suite 

[Java] Integer.parseInt »

9 réponses
Réponse
+6
moins plus
Bonjour,

La fonction java parseInt de la classe Integer soulève une exceptin de type NumberFormatException il me semble.
Si la chaine que tu tente de parser n'est pas un numérique, cette exception est levée pour signaler qu'il ne s'agit pas d'un numérique. Il faut donc que tu gère ce type d'erreur en la catchant. Si tu pose cette question j'imagine que tu ne sais pas ce que c'est encore que la gestion des erreurs en java, voici donc le code correctif pour pouvoir gérer ton erreur :

public class Conversion {
   // point d'entrée général
   public static void main (String[] args) {
	String s1 = "1";
	String s2 = "2";
        // --- Retrieve program arguments
        if ( args.length > 0 )
	    s1 = args[0];
        if ( args.length > 1 )
	    args[1]=s2;
        int i = 0;
        try{
             i=Integer.parseInt(args[0])+ Integer.parseInt(args[1]);
             System.out.println ("Nombre calculé : "+i) ;
        }catch (NumberFormatException e){
            System.out.println("Error : "+e.getMessage());
        }
   }//End main
}



ps: erreur en plus : tu attribue la valeur d'une variable non déclarée (s2) à ton tableau ce qui cause certainement une NullPointerException. De plus c'est généralement l'inverse qu'il faut faire... mettre la variable de ton tableau d'argument dans ta variable locale pour ensuite travailler avec sa valeur. Si tu souhaite initialiser cette variable s2 avec une valeur par défaut, fait le avant de récupérer la valeur dans ton tableau d'argument ;)
Ajouter un commentaire
Réponse
+3
moins plus
Bien, j'avais glisser quelques erreurs pour voir si tu avais compris le principe mais apparemment non ^^
Ton erreur est due au fait que tu ne passe aucun argument en paramètre à ton programme et que tu tente de lire des arguments (dans un tableau de taille nulle donc = non rempli) lorsque tu appelle la méthode parseInt.

Bref, voici le programme dans la mauvaise version (erreur en gras) :
public class Conversion {
   // point d'entrée général
   public static void main (String[] args) {
	String s1 = "1";
	String s2 = "2";
        // --- Retrieve program arguments
        if ( args.length > 0 )
	    s1 = args[0];
        if ( args.length > 1 )
	    args[1]=s2;
        int i = 0;
        try{
             i=Integer.parseInt(args[0])+ Integer.parseInt(args[1]);
             System.out.println ("Nombre calculé : "+i) ;
        }catch (NumberFormatException e){
            System.out.println("Error : "+e.getMessage());
        }
   }//End main
}


Et dans la bonne version :
public class Conversion {
   // point d'entrée général
   public static void main (String[] args) {
	String s1 = "1";
	String s2 = "2";
        // --- Retrieve program arguments
        if ( args.length > 0 )
	    s1 = args[0];
        if ( args.length > 1 )
	    s2 = args[1];
        int i = 0;
        try{
             i=Integer.parseInt(s1)+ Integer.parseInt(s2);
             System.out.println ("Nombre calculé : "+i) ;
        }catch (NumberFormatException e){
            System.out.println("Error : "+e.getMessage());
        }
   }//End main
}


Sauf oubli de ma part il ne devrait pas y avoir d'erreur (je n'ai pas testé)

Ajouter un commentaire
Réponse
+1
moins plus
salut dans ton programme voici ce qui ne marche pas: déja c'est ta variable s2?ca c'est une erreur puis ca te sert à rien de donner des valeur à args[0] et args[1] ce sont des valeurs dont tu dois les entrer par la ligne de commande donc c'est inutile. voila en vrai ce que tu dois avoir pour ton petit programme.tu as besoin de 4 à 5 lignes maxi pour ton programme pas besoin de beaucoup de choses.
public class Conversion {
// point d'entrée général
public static void main (String[] args) {
int i=Integer.parseInt(args[0])+ Integer.parseInt(args[1]);
System.out.println (i+" ") ;
}//End main
}
et rien d'autres.
c'est bien tous les programmes de kij_82 mais je vois que tu es debutante donc c'est un peu difficile pour toi de comprendre.
Bon courage.
coco - 23 mars 2011 à 06:17
Je suis nouveau en programmation java et je suis confronté au même problème. J'ai essayé ce que vous me dites ici mais il me dit toujours la même chose: Exception in thread main....
Ajouter un commentaire
Réponse
+0
moins plus
Resalut,

J'ai exécuté le programme, mais il m'a affichée cette erreur :

Exception in thread "main" java.lang.Array.IndexOutofBoundsException : 0 at Conversion.main(Conversion.java:13)

Merci encore une fois :)
Ajouter un commentaire
Réponse
+0
moins plus
A priori si elle a voulu traiter les argument c'est qu'elle veut pouvoir les utiliser.
Bien sur il y a des valeurs par défaut, mais si les arguments sont renseigner il faut les prendre (par exemple lancement de la classe java en ligne de commande ou depuis un autre programme avec ses propres valeurs)

Par contre je ne pense pas qu'il faille pour autant éliminer les lignes de code que j'ai mis plus haut puisqu'alors les exceptions ne sont plus gérées correctement. Si les arguments ne sont pas renseignés par exemple, ton programme échouera avec une NullPointerException, ce qui n'est pas bon.

Dernière remarque : un bon programme n'est pas un programme ou il y a le moins de ligne de code pour effectuer le travail, mais un programme géré correctement (gestion des cas d'erreur notamment)
Ajouter un commentaire
Réponse
+0
moins plus
je suis tout à fait d'accord avec toi mais je disais seulement que pour une debutante tu vois la notion de gestion d'exception ou un programme avec plusieurs lignes ne se comprend pas tres facillement il faudrait just qu'elle sache à quoi ca lui sert la notion de Integer.parseInt(...); après elle pourra l'utiliser comme elle le veux. imagine toi qu'elle ne sais pas ce qui signifie Integer.parseInt(...) et tu lui parle deja de la gestion des exceptions c'est énorme moi on m'a appris java par des choses simples avant de me parler de la gestion des exceptions. ca viens après je suis desolé.
Bon c'est bien de discuter pour échanger les idées.
Bon courage.
kij_82- 25 févr. 2008 à 11:30
C'est vrai, bonne remarque :) C'est vrai que j'ai parfois tendance à oublier la / les personnes qui sont en face
Ajouter un commentaire
Réponse
+0
moins plus
Salut kij_82 et ray_fab,

Je vous remercie de vos explications, ça me donne l'envie d'apprendre plus.

Bon week end :)
Ajouter un commentaire
Ce document intitulé « [Java] Integer.parseInt » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?