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

Leave a Reply

Telechargement