查找城市的平均温度(元素可以多次出现)

时间:2012-11-25 12:42:08

标签: java average

我在Java中遇到过这个特定问题的问题。我被卡住了! 我们要求用户输入数据和数量。然后分别输入城市的温度和名称。 虽然用户可能会为特定城市输入多个温度,例如: 维也纳23(C) 柏林12 巴黎15 柏林9 柏林10 巴黎10

没有特定的顺序。我用两个1D阵列完成了这个部分但是程序要求我们计算每个城市的平均温度,最高温度和最低温度(显然,如果我们只有一个温度,那么最小值/最大值/平均值将是相同的一个城市)。

我不知道我应该怎么做这个部分考虑到我必须通过城市阵列并检查特定城市列在那里的次数,然后找到相应的温度来找到平均值/最小值/最大值。 我有这个概念,但我无法用Java实现。有什么想法/建议? 非常感谢!

2 个答案:

答案 0 :(得分:1)

您需要更改Data Structure。对相关属性使用两个不同的数组并不是一个好主意。

相反,保持城市与其所有温度之间的映射。你需要像这样创建一个Map: -

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

然后,对于每个城市,您可以使用List<Double>为每个城市轻松计算平均值。

答案 1 :(得分:1)

您可以使用:

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

这是一个例子:

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

}