Salut,
Ton problème vient de deux éléments. Au passage ta méthode ajoute(Film f) renvoie toujours true, tu devrait au contraire renvoyer le résultat de t.add(f); qui est un boolean indiquant si vraiment ton film à été ajouté.
Ta méthode compareTo, n'est pas correct puisque tu teste des chaine sur la même instance f (donc le même objet). Tu doit comparer l'objet courant avec l'objet passé en argument.
Pas :
int comptitre = f.getTitre().compareTo(f.getTitre());
Mais :
int comptitre = getTitre().compareTo(f.getTitre());
Ensuite tes attributs dans Film sont static, donc ils appartiennent à toutes les instances et ne sont pas unique pour chaque instance.
Voici la solution :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| public class Film implements Comparable<Film> {
private String titre;
private int année;
private String réalisateur;
private String genre;
public void saisir() {
System.out.print("saisissez le titre de votre film:");
titre = Lire.S();
System.out.print("saisissez l'année de sortie de votre film:");
année = Lire.i();
System.out.print("saisissez le nom du réalisateur de votre film:");
réalisateur = Lire.S();
System.out.print("saisissez le genre de votre film:");
genre = Lire.S();
}
public void afficher() {
System.out.print("le titre du film est: " + titre + "\n");
System.out.print("l'année de sortie du film est: " + année + "\n");
System.out.print("le réalisateur du film est: " + réalisateur + "\n");
System.out.print("le genre du film est: " + genre + "\n");
}
public void setFilm(String tit, int ann, String réa, String genr) {
titre = tit;
année = ann;
réalisateur = réa;
genre = genr;
}
public String getTitre() {
return titre;
}
public int getAnn() {
return année;
}
public String getRéal() {
return réalisateur;
}
public String getGenre() {
return genre;
}
public String toString() {
return (titre + " " + année + " " + réalisateur + " " + genre);
}
public int compareTo(Film f) {
int comptitre = getTitre().compareTo(f.getTitre());
int c = comptitre != 0 ? comptitre : getRéal().compareTo(f.getRéal());
return c;
}
} |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public class ListeFilms {
public TreeSet<Film> t;
public void initialise() {
t = new TreeSet<Film>();
}
public boolean ajoute(Film f) {
return t.add(f);
}
public void affficher() {
Iterator<Film> it = t.iterator();
while (it.hasNext())
((Film) it.next()).afficher();
}
} |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| public class MaFilmotheque {
public static void main(String[] arg) {
ListeFilms L = new ListeFilms();
L.initialise();
int i = 0;
System.out.print("voulez vous ajouter un film ?\n");
char rep;
rep = Lire.c();
while (rep == 'o') {
Film f = new Film();
f.saisir();
boolean r = L.ajoute(f);
if (r) {
i++;
System.out.print("le film numero " + i + " a bien été ajouté\n");
} else {
System.out.print("le film n'a pas été ajouté\n");
}
System.out.print("voulez vous ajouter un autre film ?\n");
rep = Lire.c();
}
L.affficher();
}
} |
Partager