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.
l'errore č: Exception in thread "main" java.lang.NullPointerException
at ElaborzioneDati.addDatoMeteorologico(ElaborzioneDa ti.java:17)
at Test.main(Test.java:17)
codice:import java.io.*; public class ElaborzioneDati { private double media; private double max; private double min; private DatoMeteorologico[] registroDatiMeteorologici; private int contatore; public ElaborzioneDati() { DatoMeteorologico[] registroDatiMeteoroloigici=new DatoMeteorologico[10]; contatore=0; media=0; } public void addDatoMeteorologico(DatoMeteorologico aDatoMeteorologico){ while(contatore<=9){ registroDatiMeteorologici[contatore]=aDatoMeteorologico;//qui segna errore contatore++; } } public void calcolaMedia(){ int contatoreRilevazioniCittāDesiderata=0; String nomeCittā=getLine(); for(int i=0;i==contatore;i++){ if(nomeCittā.compareTo(registroDatiMeteorologici[i].getNomeStazione())==0){ media+=registroDatiMeteorologici[i].getTemperatura(); contatoreRilevazioniCittāDesiderata+=1; } } media=media/contatoreRilevazioniCittāDesiderata; } public void trovaMinMax(){ min=registroDatiMeteorologici[0].getTemperatura(); max=registroDatiMeteorologici[0].getTemperatura(); for(int i=1;i==contatore;i++){ if(min>registroDatiMeteorologici[i].getTemperatura()){ min=registroDatiMeteorologici[i].getTemperatura(); } if(max<registroDatiMeteorologici[i].getTemperatura()){ max=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 elaborar"); linea=input.readLine(); input.close(); } catch(IOException e){ System.out.println("Errore di input"); } return linea; } public void displayStatus(){ System.out.println("A "+getLine()+"la media delle temperature rilevate č: "+media); System.out.println("A "+getLine()+"la temperatura massima č: "+max); System.out.println("A "+getLine()+"la temperatura massima č: "+min); } } 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); 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); ElaborzioneDati elaboratore=new ElaborzioneDati(); elaboratore.addDatoMeteorologico(dato1);//qui segna errore 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.trovaMinMax(); } } 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; } }

Rispondi quotando