/ / Ricerca della temperatura media delle città (l'elemento può apparire più volte) [chiuso] - java, media

Trovare la temperatura media delle città (l'elemento può apparire più volte) [chiuso] - java, media

Ho avuto problemi con questo specificoproblema in Java. Sono bloccato! Chiediamo all'utente di inserire il numero di dati e quindi inserire rispettivamente le temperature e i nomi delle città. Si dice però che l'utente possa inserire più temperature per una città specifica, ad esempio: Vienna 23 (in C) Berlino 12 Parigi 15 Berlino 9 Berlino 10 Parigi 10

in nessun ordine specifico. Ho fatto questa parte con due array 1D ma poi il programma ci chiede di calcolare la temperatura media di ogni città, la più alta e la minima (ovviamente il min / max / avg sarà lo stesso se avessimo solo una temperatura di una città).

Non so come dovrei fare questa parteconsiderando che devo passare attraverso l'array delle città e controllare quante volte una specifica città è elencata lì e quindi trovare le rispettive temperature per trovare la media / min / max. Ho il concetto ma non riesco a realizzarlo in Java. Qualche idea / suggerimento? Molto apprezzato!

risposte:

1 per risposta № 1

Devi cambiare il tuo Data Structure. L'uso di due matrici diverse per gli attributi correlati non è una buona idea.

Piuttosto, mantenere una mappatura tra città e tutta la sua temperatura. Dovresti creare un Map come questo: -

Map<String, List<Double>> temperatureMap = new HashMap<String, List<Double>>();

Quindi, per ogni città, puoi facilmente calcolare la media usando il List<Double> per ciascuno di loro.


1 per risposta № 2

Puoi usare:

 Map<City,List<Temprature>>();

ecco un esempio:

public class Temp {
Map<String,List<Double>> temp;

public Temp() {
this.temp = new HashMap<String, List<Double>>();
}

private void insertTemperature(String city, double t) {

if (temp.containsKey(city)) {
List<Double> list = temp.get(city);
list.add(t);
} else {
List<Double> list = new ArrayList<Double>();
list.add(t);
temp.put(city,list);
}
}


private double calcAVG(String city) {
List<Double> t = temp.get(city);
double ttSum = 0;
for (Double tt : t) {
ttSum += tt;
}

return ttSum/t.size();
}

}