-2

我在 Java 中遇到了这个特定问题。我被困住了!我们要求用户输入数据数量,然后分别输入温度和城市名称。据说用户可能会为特定城市输入多个温度,例如: Vienna 23 (in C) Berlin 12 Paris 15 Berlin 9 Berlin 10 Paris 10

没有特定的顺序。我已经用两个一维数组完成了这部分,但是程序要求我们计算每个城市的平均温度,最高和最低温度(显然,如果我们只有一个温度,则 min/max/avg 将是相同的一座城市)。

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

4

2 回答 2

1

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

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

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

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

于 2012-11-25T12:47:12.827 回答
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();
}

}

于 2012-11-25T12:52:40.397 回答