Exercices Corrigés en JAVA - les classes - les tableaux
Sous Unix, les programmes sont souvent appelés de la façon suivante :
$ pg -o1 v1 v2 ... -o2 v3 v4 …
où -oi représente une option et vi une valeur associée à cette option. On désire créer une classe options qui permettrait d'analyser la chaîne d'arguments -o1 v1 v2 ... -o2 v3 v4 … afin de construire les entités suivantes :
optionsValides dictionnaire (Hashtable) dont les clés sont les options oi valides. La valeur associée à la clé oi est un vecteur (Vector) dont les éléments sont les valeurs v1 v2 … associées à l'option -oi
optionsInvalides dictionnaire (Hashtable) dont les clés sont les options oi invalides. La valeur associée à la clé oi est un vecteur (Vector) dont les éléments sont les valeurs v1 v2 …
associées à l'option -oi
optionsSans chaîne (String) donnant la liste des valeurs vi non associées à une option erreur entier valant 0 s'il n'y a pas d'erreurs dans la ligne des arguments, autre chose sinon :
1 : il y a des paramètres d'appel invalides
2 : il y a des options invalides
4 : il y a des valeurs non associées à des options
S'il y a plusieurs types d'erreurs, ces valeurs se cumulent.
Un objet options pourra être construit de 4 façons différentes :
public options (String arguments, String optionsAcceptables)
arguments la ligne d'arguments -o1 v1 v2 ... -o2 v3 v4 … à analyser optionsAcceptables la liste des options oi acceptables
Exemple d'appel : options opt=new options("-u u1 u2 u3 -g g1 g2 -x","-u -g");
Ici, les deux arguments sont des chaînes de caractères. On acceptera les cas où ces chaînes ont été découpées en mots mis dans un tableau de chaînes de caractères. Cela nécessite trois autres constructeurs :
public options (String[] arguments, String optionsAcceptables)
public options (String arguments, String[] optionsAcceptables)
public options (String[] arguments, String[] optionsAcceptables)
La classe options présentera l'interface suivante (accesseurs) :
- public Hashtable getOptionsValides()
rend la référence du tableau optionsValides construit lors de la création de l'objet options
- public Hashtable getOptionsInvalides()
rend la référence du tableau optionsInvalides construit lors de la création de l'objet options
- public String getOptionsSans()
rend la référence de la chaîne optionsSans construite lors de la création de l'objet options
- public int getErreur()
rend la valeur de l'attribut erreur construite lors de la création de l'objet options
- public String toString()
s'il n'y a pas d'erreur, affiche les valeurs des attributs optionsValides, optionsInvalides, optionsSans ou sinon affiche le numéro de l'erreur.
Voici un programme d'exemple :
import java.io.*;
public class test1{
public static void main (String[] arg){
// ouverture du flux d'entrée
String ligne;
BufferedReader IN=null;
try{
IN=new BufferedReader(new InputStreamReader(System.in));
} catch (Exception e){
affiche(e);
System.exit(1);
}
// lecture des arguments du constructeur options(String, string)
String options=null ;
String optionsAcceptables=null;
while(true){
System.out.print("Options : ");
try{
options=IN.readLine();
}catch (Exception e){
affiche(e);
System.exit(2);
}
if(options.length()==0)break;
System.out.print("Options acceptables: ");
try{
optionsAcceptables=IN.readLine();
}catch (Exception e){
affiche(e);
System.exit(2);
}
System.out.println(new options(options,optionsAcceptables));
}// fin while
}//fin main
public static void affiche(Exception e){
System.err.println("Erreur : "+e);
}
}//fin classe
Quelques résultats :
--------------------------------------------------------------------
--------------------------------------------------------------------
C:\Serge\java\options>java test1
Options : 1 2 3 -a a1 a2 -b b1 -c c1 c2 c3 -b b2 b3
Options acceptables: -a -b
Erreur 6
Options valides :(-b,b1,b2,b3) (-a,a1,a2)
Options invalides : (-c,c1,c2,c3)
Sans options : 1 2 3
--------------------------------------------------------------------
--------------------------------------------------------------------
Article plus récent Article plus ancien