Devo realizzare un programma che, una volta raccolti una serie di dati meteorologici provenienti da varie cittā, deve restituire la media delle temperature raccolte nella cittā a cui si č interessati (inserita da tastiera dall'utente), oltre la minima e la massima.
Io in questo caso ho scelto come cittā Bologna e l'output č assurdo:
Inserisci il nome della cittā a cui appartengono le temperature da elaborare
Bologna
Output:
A Bologna la media delle temperature rilevate č: NaN
A Bologna la temperatura massima č: 0.0
A Bologna la temperatura minima č: 5.1
La minima e la massima sono sbagliate e la media non č un numero.
Inoltre mi da questi valore per ogni cittā.
codice:import java.io.*; public class ElaborzioneDati { private double media; private double max; private double min; private DatoMeteorologico[] registroDatiMeteorologici; private int contatore; private String nomeCittā; private int contatoreRilevazioneCittāDesiderata; public ElaborzioneDati() { registroDatiMeteorologici=new DatoMeteorologico[10]; contatore=0; media=0; } public void addDatoMeteorologico(DatoMeteorologico aDatoMeteorologico){ while(contatore<=9){ registroDatiMeteorologici[contatore]=aDatoMeteorologico; contatore++; } } public void calcolaMedia(){ int contatoreCittāDesiderata=0; nomeCittā=getLine(); for(int i=0;i==contatore;i++){ if(nomeCittā.compareTo(registroDatiMeteorologici[i].getNomeStazione())==0){ media+=registroDatiMeteorologici[i].getTemperatura(); contatoreCittāDesiderata+=1; contatoreRilevazioneCittāDesiderata=i; } } media=media/contatoreCittāDesiderata; } public void trovaMax(){ max=registroDatiMeteorologici[contatoreRilevazioneCittāDesiderata].getTemperatura(); for(int i=1;i==contatore;i++){ if(nomeCittā==registroDatiMeteorologici[i].getNomeStazione()){ if(max<registroDatiMeteorologici[i].getTemperatura()){ max=registroDatiMeteorologici[i].getTemperatura(); } } } } public void trovaMin(){ min=registroDatiMeteorologici[contatoreRilevazioneCittāDesiderata].getTemperatura(); for(int i=1;i==contatore;i++){ if(nomeCittā==registroDatiMeteorologici[i].getNomeStazione()){ if(min>registroDatiMeteorologici[i].getTemperatura()){ min=registroDatiMeteorologici[i].getTemperatura(); } } } displayStatus(); } public static String getLine(){ InputStreamReader reader=new InputStreamReader(System.in); BufferedReader input=new BufferedReader(reader); String linea=""; try{ System.out.println("Inserisci il nome della cittā a cui appartengono le temperature da elaborare"); linea=input.readLine(); input.close(); } catch(IOException e){ System.out.println("Errore di input"); } return linea; } public void displayStatus(){ System.out.println("A "+nomeCittā+" la media delle temperature rilevate č: "+media); System.out.println("A "+nomeCittā+" la temperatura massima č: "+max); System.out.println("A "+nomeCittā+" la temperatura minima č: "+min); } } public class DatoMeteorologico { private double temperatura; private String orarioRilevazione; private String nomeStazione; public DatoMeteorologico(String aNomeStazione, String aOrarioRilevazione, double aTemperatura) { temperatura=aTemperatura; orarioRilevazione=aOrarioRilevazione; nomeStazione=aNomeStazione; } public double getTemperatura(){ return temperatura; } public String getOrarioRilevazione(){ return orarioRilevazione; } public String getNomeStazione(){ return nomeStazione; } } public class Test { public static void main(String[] args) { DatoMeteorologico dato1=new DatoMeteorologico("Bologna","01:00",5.1); DatoMeteorologico dato2=new DatoMeteorologico("Seattle","15:00",-10.5); DatoMeteorologico dato3=new DatoMeteorologico("Bologna","02:00",4.1); DatoMeteorologico dato4=new DatoMeteorologico("Bologna","03:00",4.9); DatoMeteorologico dato5=new DatoMeteorologico("Seattle","18:00",-5.2); DatoMeteorologico dato6=new DatoMeteorologico("CasaBlanca","18:00",18); DatoMeteorologico dato7=new DatoMeteorologico("CasaBlanca","20:00",18.2); DatoMeteorologico dato8=new DatoMeteorologico("CasaBlanca","24:00",20.3); DatoMeteorologico dato9=new DatoMeteorologico("Seattle","24:00",-15); DatoMeteorologico dato10=new DatoMeteorologico("Bologna","07:00",7.1); ElaborzioneDati elaboratore=new ElaborzioneDati(); elaboratore.addDatoMeteorologico(dato1); elaboratore.addDatoMeteorologico(dato2); elaboratore.addDatoMeteorologico(dato3); elaboratore.addDatoMeteorologico(dato4); elaboratore.addDatoMeteorologico(dato5); elaboratore.addDatoMeteorologico(dato6); elaboratore.addDatoMeteorologico(dato7); elaboratore.addDatoMeteorologico(dato8); elaboratore.addDatoMeteorologico(dato9); elaboratore.addDatoMeteorologico(dato10); elaboratore.calcolaMedia(); elaboratore.trovaMin(); } }

Rispondi quotando
