diff --git a/risposte.md b/risposte.md index 45c9b9d..661a870 100644 --- a/risposte.md +++ b/risposte.md @@ -27,7 +27,7 @@ Perché il main stampa 16 volte "Film non trovato"? Quale è l'errore? Individua - [x] fatto, ho aggiunto postiTotali e postiDisponibili. - setPosti mette il massimo dei posti disponibili. - - [ ] Ho dei dubbi... ma solo perchè sono stanco e non capisco bene. + - [x] Risolto. Andando a mettere due variabili ovvero postiRimasti & postiTotali. - Poi serve un vendiBiglietti (int num) che deve fare dei controlli per vedere se ce ne sono disponibili e restituire true o false a seconda che l'operazione sia possibile (e allora cambia il numero di posti ) o no (e allora non modifica nulla). - [x] fatto, ho aggiunto il metodo vendiBiglietti(int num) che restituisce true se la vendita è andata a buon fine, altrimenti restituisce false. @@ -47,12 +47,13 @@ Perché il main stampa 16 volte "Film non trovato"? Quale è l'errore? Individua - prenotaPosti: if (this.film[i] == film) { (vedi sopra) Poi usa vendiBiglietti di Film per cambiare il numero di posti, così eviti possibili errori. Deve restituire true o false, non void. Non deve stampare nulla a video (documentare cosa fa). A video deve stampare il main in base all'esito. - + - [x] fatto, ho sistemato il metodo prenotaPosti, ora restituisce un booleano, e non stampa nulla a video, ma restituisce un booleano, in base all'esito dell'operazione. - filmPiuLungo deve restituire (una copia, se vuoi fare le cose fatte bene) del film, il main poi chiama il metodo toString del film restituito - + - [x] fatto, ho sistemato il metodo filmPiuLungo, ora restituisce una copia del film più lungo. - percentualePostiOccupati così come è non ha senso. pensaci meglio + - [x] fatto, ho sistemato il metodo percentualePostiOccupati, ora calcola la percentuale di posti occupati in base al numero di posti totali e posti disponibili. - rimuoviFilm ha il solito problema \ No newline at end of file diff --git a/src/Cinema.java b/src/Cinema.java index 48d9c49..97ed32f 100644 --- a/src/Cinema.java +++ b/src/Cinema.java @@ -1,3 +1,10 @@ +/** + * Classe Cinema che va a rappresentare un cinema + * + * @autor Ciausu Angelo + * @version 1.1.5 + * */ + public class Cinema { private String nome; @@ -14,11 +21,13 @@ public class Cinema { } - /* - * Aggiungo un film all'array - * Vado a controllare se l'array è vuoto e se il film è diverso da null - * Se l'array è vuoto e il film è diverso da null vado ad aggiungere il film - * Vado a controllare che il film non sia già presente nell'array + /** + * Aggiunge un film all'array di film. + * + * Questo metodo cerca un posto libero nell'array di film e aggiunge il film + * se non è già presente. + * + * @param f il film da aggiungere */ public void aggiungiFilm(Film f) { for (int i = 0; i < film.length; i++) { @@ -32,51 +41,67 @@ public class Cinema { } } - /* - * Preno i posti per un film, vado a controllare se il film è presente nell'array - * Se il film è presente vado a controllare se ci sono abbastanza posti - * Se ci sono abbastanza posti vado a decrementare i posti - * Altrimenti stampo un messaggio di errore - * - * @param Posti - * @param film - * */ - public void prenotaPosti(int Posti, Film film){ + /** + * Prenota il numero specificato di posti per un determinato film. + * + * Questo metodo cerca dentro l'array di film per trovare il film specificato. + * Se il film viene trovato, tenta di prenotare il numero specificato di posti utilizzando + * il metodo vendiBiglietti della classe Film. Il metodo restituisce true se + * la prenotazione ha successo, altrimenti restituisce false. + * + * @param Posti il numero di posti da prenotare + * @param film il film per cui prenotare i posti + * @return `true se i posti sono stati prenotati con successo, `false` altrimenti + */ + public boolean prenotaPosti(int Posti, Film film) { for (int i = 0; i < this.film.length; i++) { - if (this.film[i] == film) { - if (this.film[i].getPosti() >= Posti) { - this.film[i].setPosti(this.film[i].getPosti() - Posti); - } else { - System.out.println("Posti non disponibili"); - } - }else { - System.out.println("Film non trovato"); + if (this.film[i] != null && this.film[i].equals(film)) { + return this.film[i].vendiBiglietti(Posti); } } + return false; } - /* - * Vado a controllare tutti i film presenti nell'array e vado a stampare il film più lungo - * Vado a controllare se il film attuale è maggiore del film precedente - * */ - public void filmPiùLungo() { - Film film = this.film[0]; + /** + * Restituisce una copia del film con la durata maggiore. + * + * Questo metodo itera attraverso l'array di film per trovare il film con la durata maggiore. + * Se il film viene trovato, restituisce una nuova istanza del film con gli stessi attributi. + * + * @return una copia del film con la durata maggiore + */ + public Film filmPiùLungo() { + Film filmPiuLungo = this.film[0]; for (int i = 0; i < this.film.length; i++) { if (this.film[i] != null) { - if (this.film[i].getDurata() > film.getDurata()) { - film = this.film[i]; + if (this.film[i].getDurata() > filmPiuLungo.getDurata()) { + filmPiuLungo = this.film[i]; } } } - System.out.println("Il film più lungo è: " + film.getTitolo()); + return new Film(filmPiuLungo.getTitolo(), filmPiuLungo.getDurata(), filmPiuLungo.getSala(), filmPiuLungo.getPostiDisponibili()); } - public void percentualePostiOccupati(Film film){ + /** + * Calcola e stampa la percentuale di posti occupati per un determinato film. + * + * Questo metodo cerca il film specificato nell'array di film e calcola la percentuale + * di posti occupati rispetto al totale dei posti disponibili. + * + * @param film il film per cui calcolare la percentuale di posti occupati + */ + public void percentualePostiOccupati(Film film) { for (int i = 0; i < this.film.length; i++) { - if (this.film[i] == film) { - System.out.println("Percentuale posti occupati: " + (film.getPosti() * 100) / film.getPosti()); + if (this.film[i] != null && this.film[i].equals(film)) { + int postiTotali = this.film[i].getPostiTotali(); + int postiDisponibili = this.film[i].getPostiDisponibili(); + int postiOccupati = postiTotali - postiDisponibili; + double percentuale = (double) postiOccupati / postiTotali * 100; + System.out.println("Percentuale posti occupati: " + percentuale + "%"); + return; } } + System.out.println("Film non trovato"); } public void rimuoviFilm(Film film){