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