Rechercher : dans
Par :

[Java] Integer.parseInt

Dernière réponse le 25 fév 2008 à 11:30:29 khaoula.85, le 22 fév 2008 à 08:21:45 
 Signaler ce message aux modérateurs

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 ;)

Meilleures réponses pour « [Java] Integer.parseInt » dans :
Java - Les types de données Voir Les primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et...
[Firefox] plugin Java Jre de Sun VoirA) Les différentes variantes Java chez Sun B) Installation sous Mandriva Limited Edition 2005 ETAPE 1 ETAPE 2: Création du lien symbolique C) Installation sous debian lenny D) Installation sous ubuntu hardy heron A) Les différentes...
Installer Java sous Ubuntu VoirPar défaut, Firefox n'est pas fourni avec Java. Voici comment procéder pour l'installer: Ouvrez un terminal (Menu Applications > Accessoires > Terminal) et tapez: sudo aptitude install sun-java6-jre sun-java6-plugin ou sudo aptitude install ...
Télécharger Pilote SoundMAX Integrated Digital Audio Driver VoirLe pilote SoundMAX Integrated Digital Audio Driver ( ADI ) est un driver conçu pour les cartes mères ayant une carte son à base de puce audio SoundMax. Le driver est entièrement gratuit. Le site officiel ne fournit plus le driver en question...
Télécharger Java Runtime Environment VoirJava Runtime Environment (JRE) installe la machine virtuelle Java, permettant de jouer en ligne, de discuter avec des personnes dans le monde entier, de calculer les intérêts de votre prêt immobilier ou de visualiser des images en 3D. Ces...
Les classes Java VoirLa notion d'objet Le langage Java intègre fortement le concept objet, il s'agit donc d'un langage orienté objet (LOO). Le terme langage orienté objet est plus qu'une simple appellation de plus pour désigner un type de langage, il...
Java VoirHistoire de Java Java est un langage objet ressemblant au langage C++. Il a été mis au point en 1991 par la firme Sun Microsystems. Le but de Java à l'époque était de constituer un langage de programmation pouvant être intégré dans les appareils...
Enterprise Resource Planning (ERP) - Progiciel de Gestion Intégr VoirIntroduction aux ERP Les ERP (en anglais Enterprise Resource Planning), aussi appelés Progiciels de Gestion Intégrés (PGI), sont des applications dont le but est de coordonner l'ensemble des activités d'une entreprise (activités dites verticales...

1

kij_82, le 22 fév 2008 à 09:26:20
  • +2

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 ;)

~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~

Répondre à kij_82

2

khaoula.85, le 22 fév 2008 à 11:16:41

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 :)

Répondre à khaoula.85

3

kij_82, le 22 fév 2008 à 11:50:23
  • +1

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é)


~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~

Répondre à kij_82

4

ray_fab, le 22 fév 2008 à 16:56:25

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.

Répondre à ray_fab

5

kij_82, le 22 fév 2008 à 17:07:13

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)

~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~

Répondre à kij_82

6

ray_fab, le 22 fév 2008 à 17:27:01

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.

Répondre à ray_fab

8

 kij_82, le 25 fév 2008 à 11:30:29

C'est vrai, bonne remarque :) C'est vrai que j'ai parfois tendance à oublier la / les personnes qui sont en face

~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~

Répondre à kij_82

7

khaoula.85, le 23 fév 2008 à 10:06:55

Salut kij_82 et ray_fab,

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

Bon week end :)

Répondre à khaoula.85
Collection CommentÇaMarche.net