TD JAVA - Exercice Corrigé : les tableaux la classe Vector - Vecteur

Les Tableaux en JAVA VECTOR 

On désire créer une classe stringtovector permettant de transférer le contenu d'un objet String dans un objet Vector. Cette classe serait dérivée de la classe Vector : 


             class stringtovector extends Vector 

et aurait le constructeur suivant : 


privatevoid stringtovector(String S, String separateur, int[] tChampsVoulus, 
    boolean boolean boolean boolean strict){ 
   
   // crée un vecteur avec les champs de la chaîne S 
   // celle-ci est constituée de champs séparés par separateur 
   // si séparateur=null, la chaîne ne forme qu'un seul champ 
   // seuls les champs dont les index sont dans le tableau tChampsVoulus  
   // sont désirés. Les index commencent à 1 
   // si tChampsvoulus=null ou de taille nulle, on prend tous les champs 
   // si strict=vrai, tous les champs désirés doivent être présents 

La classe aurait l'attribut privé suivant : 

  private int erreur; 

Cet attribut est positionné par le constructeur précédent avec les valeurs suivantes : 
0 : la construction s'est bien passée 
4 : certains champs demandés sont absents alors que strict=true 

La classe aura également deux méthodes : 


  public int getErreur() 

qui rend la valeur de l'attribut privé erreur. 

  public String identite(){ 

qui affiche la valeur de l'objet sous la forme (erreur, élément 1, élément 2, …) où éléments i sont les éléments du vecteur construit à 
partir de la chaîne. 

  
Un programme de test pourrait être le suivant : 

import java.io.*; 
//import stringtovector; 

public class essai2{ 
  public static void main(String arg[]){ 
    int[] T1={1,3}; 
    System.out.println(new stringtovector("a : b : c :d:e",":",T1,true true true true).identite()); 
     int[] T2={1,3,7}; 
    System.out.println(new stringtovector("a : b : c :d:e",":",T2,true).identite()); 
    int int int int [] T3={1,4,7}; 
    System.out.println(new stringtovector("a : b : c :d:e",":",T3,false).identite()); 
    System.out.println(new stringtovector("a : b : c :d:e","",T1,false).identite()); 
    System.out.println(new stringtovector("a : b : c :d:e",null,T1,false).identite()); 
    int[] T4={1}; 
    System.out.println(new stringtovector("a : b : c :d:e","!",T4,true).identite()); 
    int[] T5=null; 
    System.out.println(new stringtovector("a : b : c :d:e",":",T5,true).identite()); 
    System.out.println(new stringtovector("a : b : c :d:e",null,T5,true).identite()); 
    int[] T6=new int[0]; 
    System.out.println(new stringtovector("a : b : c :d:e","",T6,true).identite()); 
    int int int int[] T7={1,3,4}; 
    System.out.println(new stringtovector("a  b  c d e"," ",T6,true).identite()); 
  } 

Les résultats : 
-------------------------------------------- 
--------------------------------------------
(0,a,c) 
(4,a,c) 
(0,a,d) 
(0,a : b : c :d:e) 
(0,a : b : c :d:e) 
(0,a : b : c :d:e) 
(0,a,b,c,d,e) 
(0,a : b : c :d:e) 
(0,a : b : c :d:e) 
(0,a,b,c,d,e) 
--------------------------------------------
--------------------------------------------

Quelques conseils : 

1.  Pour découper la chaîne S en champs, utiliser la méthode split de la classe String. 
2.  Mettre les champs de S dans un dictionnaire D indexé par le numéro du champ 
3.  Récupérer dans le dictionnaire D les seuls champs ayant leur clé (index) dans le tableau tChampsVoulus. 


Article plus récent Article plus ancien

Leave a Reply

Telechargement