// JoueurClub.java 14 septembre 2004 // Plusieurs joueurs dans un "Vector" // Vérification qu'un joueur de meme club et même maillot existe import java.util.Vector; // Pour mémoriser des joueurs et des clubs public class Joueur { /** numéro unique parmi tous les joueurs */ int numJoueur; /** nom du joueur*/ String nomJoueur; /** numéro du club dans lequel il joue */ int numClub; /** numéro du maillot dans le club */ int numMaillot; /** Constructeur */ public Joueur(int n, String no, int c, int m) { numJoueur=n; nomJoueur=nomNormalisé(no); numClub=c; numMaillot=m; } public String toString() { return "Nom:"+nomJoueur+", club("+numClub+") maillot("+numMaillot+")"; } /** Renvoie vrai si le club et le maillot sont dans desJoueurs. */ public boolean maillotDansClub(Vector desJoueurs) { boolean trouve=false; Joueur j; for(int i=0; !trouve && i<desJoueurs.size(); i++) { j = (Joueur)desJoueurs.elementAt(i); trouve = (j.numClub==numClub) && (j.numMaillot==numMaillot); } return trouve; } /** Initiale seule en majuscule */ static String nomNormalisé(String nom) { return nom.substring(0,1).toUpperCase()+nom.substring(1).toLowerCase(); } } /* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **/ class Club { static int nbClubs=0; int numClub; /** numéro attribué automatiquement */ String sigle; String ville; Club(String s, String v) { nbClubs++; numClub=nbClubs; sigle=s; ville=Joueur.nomNormalisé(v); } public String toString() { return "Club "+sigle+ " à "+ville+" ("+numClub+')'; } /** Renvoie vrai si le club est déja présent. */ public boolean présentDans(Vector desClubs) { Club c; boolean trouve; for(int i=0, trouve=false; !trouve && i<desClubs.size(); i++) { c = (Club)desClubs.elementAt(i); trouve = (c.numClub==numClub); } return trouve; } } /* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **/ /** TestJC.java test des classes Joueur et Club */ import java.util.Vector; public class TestJC { public TestJC() {} static void ajoutCond(Vector desJ, Joueur j) { U.a("ajout de "+j+" ?"); if(j.maillotDansClub(desJ)) U.a_(" présent"); else { U.a_(" ajouté"); desJ.add(j); } } static void ajoutCond(Vector desC, Club c) { U.a("ajout de "+c+" ?"); if(c.présentDans(desC)) U.a_(" présent"); else { U.a_(" ajouté"); desC.add(c); } } /** Test classes Joueur et Club 10 "Henry" 2 2 20 "Bob" 2 4 30 "Ali" 2 4 40 "Dick" 2 2 */ public static void main(String[] mots){ /* Test classe Joueur */ Joueur j1 = new Joueur(10, "hENRY", 2, 2) ,j2 = new Joueur(20, "BOB", 2, 6) ,j3 = new Joueur(30, "Ali", 2, 4) ,j4 = new Joueur(40, "Dick", 2, 4) ; Vector desJ = new Vector(); ajoutCond(desJ,j1); ajoutCond(desJ,j2); ajoutCond(desJ,j3); ajoutCond(desJ,j4); U.a_("AUTRE ESSAI"); desJ.removeAllElements(); Joueur jj[] = {j1,j2,j3,j4}; for(int i=0; i<jj.length; i++) ajoutCond(desJ,jj[i]); U.a_("AVEC PASSAGE PAR LIGNE DE COMMANDE"); // 10 "Henry" 2 2 20 "Bob" 2 4 30 "Ali" 2 4 40 "Dick" 2 2 U.a_("nb. arguments: "+mots.length); int nj=mots.length/4; desJ.removeAllElements(); for(int i=0; i<nj; i++) { int numéro=Integer.parseInt(mots[i*4]); int club=Integer.parseInt(mots[i*4+2]); int maillot=Integer.parseInt(mots[i*4+3]); Joueur j=new Joueur(numéro,mots[4*i],club,maillot); ajoutCond(desJ,j); } /**/ /* Test classe Club */ Club c1 = new Club("AJA","AuXERRe") ,c2 = new Club("OL", "LYON") ,c3 = new Club("Ajax", "Amsterdam") ,c4 = new Club("Inter", "Milan") ; U.a_("Clubs: "+c1+", "+c4); Vector desC = new Vector(); ajoutCond(desC,c1); ajoutCond(desC,c2); ajoutCond(desC,c2); ajoutCond(desC,c1); } } // fin de TestJC.java