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;
}
}