Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    30

    Come mai mi da un thread error nullPointerException?

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

  2. #2

    Re: Come mai mi da un thread error nullPointerException?

    Originariamente inviato da mattia96
    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++;
    		}
    	}
    
    ...
    Perchč registroDatiMetereologici č null.
    Non lo inizializzi bene nel costruttore, crei un altro array, non inizializzi l'attributo.
    Cambia il costruttore cosė
    codice:
    	public ElaborzioneDati() {
    		registroDatiMeteoroloigici=new DatoMeteorologico[10];
    		contatore=0;
    		media=0;
    	}
    lolide
    Java Programmer

    Informati

  3. #3

    Re: Come mai mi da un thread error nullPointerException?

    Originariamente inviato da mattia96
    l'errore č: Exception in thread "main" java.lang.NullPointerException
    at ElaborzioneDati.addDatoMeteorologico(ElaborzioneDa ti.java:17)
    at Test.main(Test.java:17)
    L'errore č qui:
    codice:
    DatoMeteorologico[] registroDatiMeteoroloigici=new DatoMeteorologico[10];

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.