diff --git a/src/concessionarialista/Automobile.java b/src/concessionarialista/Automobile.java index 0169ae4..48d7fed 100644 --- a/src/concessionarialista/Automobile.java +++ b/src/concessionarialista/Automobile.java @@ -4,9 +4,8 @@ import java.util.Calendar; public class Automobile { private String numeroTelaio; - private Calendar dataDiVendita; + private Calendar dataDiVendita; private String colore; - private double prezzoDiVendita; private int etaAcquirente; @@ -26,4 +25,12 @@ public class Automobile { public int getEtaAcquirente() { return etaAcquirente; } + + public Calendar getDataDiVendita() { + return dataDiVendita; + } + + public double getPrezzoDiVendita() { + return prezzoDiVendita; + } } diff --git a/src/concessionarialista/ConcessionariaLista.java b/src/concessionarialista/ConcessionariaLista.java index 84e2769..d02f78b 100644 --- a/src/concessionarialista/ConcessionariaLista.java +++ b/src/concessionarialista/ConcessionariaLista.java @@ -52,11 +52,19 @@ public class ConcessionariaLista { pausa(); break; case 2: - System.out.println(etaMediaPerColore(concessionaria)); + if (concessionaria.isEmpty()) { + System.out.println("Inserire almeno un'auto prima di proseguire."); + } else { + System.out.println(etaMediaPerColore(concessionaria)); + } pausa(); break; case 3: - + if (concessionaria.isEmpty()) { + System.out.println("Inserire almeno un'auto prima di proseguire."); + } else { + System.out.println(prezzoMedioBluInIntervallo(concessionaria)); + } pausa(); break; default: @@ -86,7 +94,7 @@ public class ConcessionariaLista { System.out.print("Inserire il numero di telaio: "); numeroTelaio = sc.nextLine(); - dataDiVendita.setTime(dataDiVendita()); + dataDiVendita.setTime(data("di vendita")); colore = colore(); @@ -97,7 +105,7 @@ public class ConcessionariaLista { concessionaria.add(new Automobile(numeroTelaio, dataDiVendita, colore, prezzoDiVendita, etaAcquirente)); } - private static Date dataDiVendita() { + private static Date data(String diCheCosa) { SimpleDateFormat sdf = new SimpleDateFormat(FORMATO_DATA); boolean error; Date data = null; @@ -105,7 +113,7 @@ public class ConcessionariaLista { do { error = false; - System.out.print("Inserire la data di vendita nel formato " + FORMATO_DATA + ": "); + System.out.print("Inserire la data " + diCheCosa + " nel formato " + FORMATO_DATA + ": "); try { data = sdf.parse(sc.nextLine()); } catch (ParseException _) { @@ -475,9 +483,40 @@ public class ConcessionariaLista { if (quantitaEta == 0) { etaMediaPerColore = "Nessuno acquista un'auto di colore " + colore.toLowerCase(); } else { - etaMediaPerColore = "L'età media di chi acquista un'auto di colore " + colore.toLowerCase() + " è " + (etaTotale/quantitaEta); + etaMediaPerColore = "L'età media di chi acquista un'auto di colore " + colore.toLowerCase() + " è " + + ((double) etaTotale / quantitaEta); } return etaMediaPerColore; } + + private static String prezzoMedioBluInIntervallo(LinkedList concessionaria) { + String prezzoMedioBluInIntervallo; + ListIterator iterator = concessionaria.listIterator(); + Calendar inizioIntervallo = Calendar.getInstance(); + Calendar fineIntervallo = Calendar.getInstance(); + Automobile corrente; + double prezzoTotale = 0; + int quantitaPrezzo = 0; + + inizioIntervallo.setTime(data("dell'inizio dell'intervallo in cui cercare")); + fineIntervallo.setTime(data("della fine dell'intervallo in cui cercare")); + + while (iterator.hasNext()) { + corrente = iterator.next(); + if (corrente.getDataDiVendita().after(inizioIntervallo) && corrente.getDataDiVendita().before(fineIntervallo)) { + prezzoTotale += corrente.getPrezzoDiVendita(); + quantitaPrezzo++; + } + } + + if (quantitaPrezzo == 0) { + prezzoMedioBluInIntervallo = "Nessuno acquista un'auto di colore blu"; + } else { + prezzoMedioBluInIntervallo = "Il prezzo medio di un'auto di colore blu è " + + (prezzoTotale / quantitaPrezzo); + } + + return prezzoMedioBluInIntervallo; + } }