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


}