probleme gestionnaire de film
bonjour,
je débute en java du coup j'ai commencé par faire une application qui gere des films, et pour cela j'ai utilisé les TreeSet je sais que c'est pas la plus simple des façons mais j'avais envie de relever le défi sauf que je suis vraiment bloqué.
C'est au moment ou je veux ajouter un film, quand j'en ajoute un ça marche et j'arrive à l'afficher mais quand j'en ajoute un deuxième il vient écraser le premier car quand j'affiche ce qu'il y a dans ma liste de films je trouve que le dernier.
je vous mets le code à votre disposition. merci de m'aider:
MaFilmotheque.java
Code:
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
| package ftech.Class;
public class MaFilmotheque {
public static void creer()
{
}
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();
L.ajoute(f);
i++;
System.out.print("le film numero "+i+" a bien été ajouté\n");
System.out.print("voulez vous ajouter un autre film ?\n");
rep=Lire.c();
}
L.affficher();
}
} |
ListeFilms.java
Code:
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
| package ftech.Class;
import java.util.*;
public class ListeFilms {
public TreeSet <Film> t;
public void initialise(){
t=new TreeSet<Film>();
}
public boolean ajoute(Film f){
t.add(f);
return true;
}
public void affficher(){
Iterator<Film> it=t.iterator();
while (it.hasNext())
System.out.println(((Film)(it.next())).toString());
}
} |
Film.java
Code:
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
| package ftech.Class;
public class Film implements Comparable<Film>{
static private String titre;
static private int année;
static private String réalisateur;
static 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 = f.getTitre().compareTo(f.getTitre());
return
comptitre != 0 ? comptitre : f.getRéal().compareTo(f.getRéal());
}
} |
et une classe qui gère le flux entrant:
Lire.java
Code:
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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
| package ftech.Class;
import java.io.*;
public class Lire
{
public static String S() // Lire un String
{
String tmp = "";
char C='\0';
try {
while ((C=(char) System.in.read()) !='\n')
{
if (C != '\r') tmp = tmp+C;
}
}
catch (IOException e)
{
System.out.println("Erreur de frappe");
System.exit(0);
}
return tmp;
} // fin de S()
public static byte b() // Lire un entier byte
{
byte x=0;
try {
x=Byte.parseByte(S());
}
catch (NumberFormatException e) {
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}
public static short s() // Lire un entier short
{
short x=0;
try {
x=Short.parseShort(S());
}
catch (NumberFormatException e) {
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}
public static int i() // Lire un entier
{
int x=0;
try {
x=Integer.parseInt(S());
}
catch (NumberFormatException e) {
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}
public static long l() // Lire un entier long
{
long x=0;
try {
x=Long.parseLong(S());
}
catch (NumberFormatException e) {
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}
public static double d() // Lire un double
{
double x=0.0;
try {
x=Double.valueOf(S()).doubleValue();
}
catch (NumberFormatException e) {
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}
public static float f() // Lire un float
{
float x=0.0f;
try {
x=Float.valueOf(S()).floatValue();
}
catch (NumberFormatException e)
{
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}
public static char c() // Lire un caractere
{
String tmp=S();
if (tmp.length()==0)
return '\n';
else
{
return tmp.charAt(0);
}
}
} |
un autre probleme dans ma filmotheque
salut tout le monde donc j'ai presque fini mon application filmotheque sauf que ça plante à un moment donné, il ya tout qui marche comme je veux sauf quand j'entre un numero de film à supprimer ça me le supprime mais ça n'afficher pas la contenu de ma filmotheque après, je sais pas pourquoi voici le code les gars:
Code:
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 64 65 66
| package ftech.Class;
import java.util.*;
public class ListeFilms {
public TreeSet<Film> t;
public void initialise() {
t = new TreeSet<Film>();
}
public boolean ajoute(Film f) {
if (t.add(f)) {
System.out.print("l'ajout s'est bien deroulé\n");
return true;
} else {
System.out.print("l'ajout n'est pas effectué\n");
return false;
}
}
public void affficher() {
Iterator<Film> it = t.iterator();
while (it.hasNext())
System.out.println(((Film) (it.next())).toString());
}
public void supprimer() {
int num = 1;
Iterator<Film> it = t.iterator();
while (it.hasNext()) {
Film f = (Film) (it.next());
System.out.println(f + " ------> " + num);
num++;
}
System.out
.println("saisissez le numéro du film que vous désirez supprimer de la collection:");
int m = Lire.i();
it = t.iterator();
num = 1;
while (it.hasNext()) {
if (num == m) {
boolean b;
b = t.remove(it.next());
if (b) {
System.out.print("le film numéro " + num
+ " a bien été supprimé");
} else {
System.out.print("le film numéro" + num
+ "n'a pas été supprimé");
}
}
num++;
affficher();
}
}
} |
Code:
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
| package ftech.Class;
public class MaFilmotheque {
public static void insérer()
{
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')
{
System.out.print("saisissez le titre de votre film:");
String tit=Lire.S();
System.out.print("saisissez l'année de sortie de votre film:");
int ann=Lire.i();
System.out.print("saisissez le nom du réalisateur de votre film:");
String réa=Lire.S();
System.out.print("saisissez le genre de votre film:");
String gen=Lire.S();
Film f= new Film(tit,ann,réa,gen);
L.ajoute(f);
i++;
System.out.print("le film numero "+i+" a bien été ajouté\n");
System.out.print("voulez vous ajouter un autre film ?\n");
rep=Lire.c();
}
//L.affficher();
L.supprimer();
//L.affficher();
}
public static void main(String [] arg) {
insérer();
}
} |
Code:
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 64 65 66 67 68
|
package ftech.Class;
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 Film(String tit,int ann,String réa,String gen)
{
titre=tit;
année=ann;
réalisateur=réa;
genre=gen;
}
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());
return
comptitre != 0 ? comptitre : getRéal().compareTo(f.getRéal());
}
} |
Code:
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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
| package ftech.Class;
import java.io.*;
public class Lire
{
public static String S() // Lire un String
{
String tmp = "";
char C='\0';
try {
while ((C=(char) System.in.read()) !='\n')
{
if (C != '\r') tmp = tmp+C;
}
}
catch (IOException e)
{
System.out.println("Erreur de frappe");
System.exit(0);
}
return tmp;
} // fin de S()
public static byte b() // Lire un entier byte
{
byte x=0;
try {
x=Byte.parseByte(S());
}
catch (NumberFormatException e) {
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}
public static short s() // Lire un entier short
{
short x=0;
try {
x=Short.parseShort(S());
}
catch (NumberFormatException e) {
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}
public static int i() // Lire un entier
{
int x=0;
try {
x=Integer.parseInt(S());
}
catch (NumberFormatException e) {
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}
public static long l() // Lire un entier long
{
long x=0;
try {
x=Long.parseLong(S());
}
catch (NumberFormatException e) {
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}
public static double d() // Lire un double
{
double x=0.0;
try {
x=Double.valueOf(S()).doubleValue();
}
catch (NumberFormatException e) {
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}
public static float f() // Lire un float
{
float x=0.0f;
try {
x=Float.valueOf(S()).floatValue();
}
catch (NumberFormatException e)
{
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}
public static char c() // Lire un caractere
{
String tmp=S();
if (tmp.length()==0)
return '\n';
else
{
return tmp.charAt(0);
}
}
} |