Exercice Java : Arguments de la ligne de commande

Exercice java traite le  sujet suivant:

Arguments de la ligne de commande

Examinons ce petit Exercice java:



Écrire un programme qui récupère deux entiers sur la “ligne de commande” et qui en affiche la somme en fenêtre console, comme dans cet exemple :
12 + 25 = 37
On vérifiera que les arguments fournis sont formés uniquement de chiffres (sans aucun signe) ; dans le cas contraire, le  programme s’interrompra.

Les arguments de la ligne de commande sont transmis à la méthode main, par le biais de son unique argument qui se  trouve être un tableau de références sur des chaînes.
Nous vérifions tout d’abord que ce tableau est de taille 2. Si ce n’est pas le cas, nous interrompons le programme en  appelant la méthode System.exit.
Puis nous nous assurons que tous les caractères des deux chaînes sont bien des chiffres (caractères de 0 à 9). Pour ce  faire, nous utilisons ici la méthode substring pour extraire chaque caractère de l’argument sous forme d’une chaîne de  longueur un ; celle-ci est alors comparée (par equals1) avec chacune des chaînes obtenues en convertissant chacun des nombres 0 à 9 en une chaîne (notez que l’on ne peut pas comparer directement une chaîne de longueur 1 avec un  caracètre). Là encore, si les conditions voulues ne sont pas remplies, nous interrompons le programme.
Enfin, nous convertissons les deux arguments (ainsi contrôlés) à l’aide de la méthode parseInt de la classe enveloppe  Integer.

public class ArgLC2
{ public static void main (String args[])
  {
    int nbArgs = args.length ;
    if (nbArgs != 2) { System.out.println ("nombre arguments incorrect") ;
                       System.exit(-1) ;
                     }
    // on verifie que les caracteres de args[0] et args[1]
    //    sont bien des chiffres
    for (int i=0 ; i<2 ; i++)
    comp :  for (int j=0 ; j<args[i].length() ; j++)
        { for (int k=0 ; k<=9 ; k++)
            if (args[i].substring(j,j+1).equals(String.valueOf(k))) break comp ;
          System.out.println ("arguments pas tous numeriques") ;
          System.exit(-1) ;
        }
    int n1 = Integer.parseInt (args[0]) ;
    int n2 = Integer.parseInt (args[1]) ;
    System.out.println (n1 + " + " + n2 + " = " + (n1+n2)) ;
  }
}

12 + 25 = 37

Remarque:

La ligne :

if (args[i].substring(j,j+1).equals(String.valueOf(k))) break comp ;

pourrait être remplacée par :

if (args[i].charAt(j)==chif[k]) break comp ;

avec, par exemple :

char[] chif = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'} ;


1. Attention à ne pas utiliser l’opérateur == qui comparerait, non pas les valeurs des chaînes, mais simplement leurs
références !

Speak Your Mind

*


*