Allora ragazzi non me ne esco proprio ad uscire da questo esercizio che simula il funzionamento di una videoteca.
ecco la classe FIlm
public class Film
{
private String nome;
private String genere;
private int mediaRecensione;
//Costruttore
public Film(String nome,String genere,int mediaRecensione)
{
this.setGenere(genere);
this.setNome(nome);
this.setMediaRecensione(mediaRecensione);
}
//metodi setter e getter
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getGenere() {
return genere;
}
public void setGenere(String genere) {
this.genere = genere;
}
public int getMediaRecensione() {
return mediaRecensione;
}
public void setMediaRecensione(int mediaRecensione) {
this.mediaRecensione = mediaRecensione;
}
@Override
public String toString()
{
return getNome();
}
}
ora la classe della videoteca
public class Videoteca
{
private Film[] films;
//Costruttore
public Videoteca()
{
films = new Film[10];
caricaFilm();
}
//Getter and setter
public Film[] getFilms() {
return films;
}
public void setFilms(Film[] films) {
this.films = films;
}
public Film[] getFilmFiltrati(FiltroFilm filtrofilm)
{
Film[] filmFiltrati = new Film[10];
for (int i=0,j=0;i<10;i++)
{
if(filtrofilm.filtra(films[i]))
{
filmFiltrati[j]=films[i];
j++;
}
}
return filmFiltrati;
}
private void caricaFilm()
{
System.out.println("Caricamento film..");
films[0]= new Film("La preda perfetta","azione",7);
films[1]= new Film("harryPotter","fantascienza",10);
films[2]= new Film("Dragonball","cartone",10);
films[3]= new Film("La preda perfetta","azione",7);
films[4]= new Film("Goal","sport",3);
films[5]= new Film("Mordecai","comico",2);
films[6]= new Film("Fast and Furious","azione",10);
films[7]= new Film("I sette nani","fantascienza",6);
films[8]= new Film("naruto","cartone",6);
films[9]= new Film("sfdfag","fantascienza",1);
//films[10]= new Film("hhhhhr","azione",10);
}
}
l'interfaccia Filtrofilm
@FunctionalInterface
public interface FiltroFilm
{
boolean filtra(Film film);
}
ed infine la classe di test
public class TestVideoteca
{
public static void main(String[] args)
{
Videoteca videoteca = new Videoteca();
System.out.println("Bei film:..");
Film[] beiFilm = videoteca.getFilmFiltrati((Film film)->film.getMediaRecensione()>3);
for(int i =0;i<beiFilm.length;i++)
{
System.out.println(beiFilm[i]);
};
System.out.println("Film di fantascienza..");
Film[] filmFantascienza = videoteca.getFilmFiltrati((Film film)->film.getGenere().equals("fantascienza"));
for(int i =0;i<filmFantascienza.length;i++)
{
System.out.println(filmFantascienza[i]);
}
}
}
il problema è proprio che non riresco a visualizzare bene i risultati, mi stampa sempre 10 film mettendo null a quelli che non rispecchiano il filtro, ma non dovrebbero tornare alle variabili sono i film giusti??