Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查找城市平均温度(元素可以多次出现)_Java_Average - Fatal编程技术网

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

Java 查找城市平均温度(元素可以多次出现),java,average,Java,Average,我在Java中遇到了这个特定问题。我卡住了! 我们要求用户输入数据数量,然后分别输入温度和城市名称。 据说用户可能输入特定城市的多种温度,例如: 维也纳23(C) 柏林12 巴黎15 柏林9 柏林10 巴黎10 没有具体的顺序。我已经用两个1D阵列完成了这一部分,但是程序要求我们计算每个城市的平均温度,最高和最低温度(显然,如果一个城市只有一个温度,那么最低/最高/平均温度将是相同的) 我不知道我应该怎么做这部分,因为我必须通过城市阵列,检查特定城市在那里列出了多少次,然后找到相应的温度,以找到

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

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

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

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

相反,要在城市和所有温度之间绘制地图。您需要创建一个
映射
,如下所示:-

Map<String, List<Double>> temperatureMap = new HashMap<String, List<Double>>();
Map temperatureMap=newhashmap();
然后,您可以使用
列表轻松计算每个城市的平均值。

您可以使用:

 Map<City,List<Temprature>>();
Map();
以下是一个例子:

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();
}
公共类临时{
地图温度;
公共临时工(){
this.temp=new HashMap();
}
私人空间插入温度(字符串城市,双t){
if(临时集装箱(城市)){
列表=临时获取(城市);
列表。添加(t);
}否则{
列表=新的ArrayList();
列表。添加(t);
临时职位(城市、列表);
}
}
私人双人房(字符串城市){
列表t=临时获取(城市);
双ttSum=0;
用于(双tt:t){
ttSum+=tt;
}
返回ttSum/t.size();
}

}

@DNA。。哎呀。。对不起。下次我会等几秒钟再发布我的答案真是太好了,非常感谢;-)哦,谢谢你的快速回答,但是我们还没有学会如何创建“地图”,所以我不能使用它。我能做些更简单(更多java基础)的事情吗?@user1851084。。相信我,这将是满足您需求的最佳解决方案。你会看到这是多么简单,当你继续往下看的时候。您总是可以自己学习。@user1851084。。为了创建
地图
,我已经为您发布了代码。如果你想添加一些东西,我会添加。请,如果你要分发整个代码,你不应该为了一些看起来像家庭作业的问题而这样做。还需要添加一些解释。事实上,从目前的情况来看,这些代码不会被编译。类型
City
未定义。感谢Ahiel&RohitJain。我要联系我的老师,问他是否允许我使用地图/列表。非常有帮助!还有@RohitJain,别担心——这只是任务的一小部分,我要完成它还有很长的路要走,呵呵;]@用户1851084。。好吧,不客气:)。是的,你可能需要做更多的工作,但一般来说,我们不会给出直接的代码,除非询问者已经尝试了一些东西。这可能会在海报上留下这样的印象,他们可以在这里完成作业。我完全理解。再次感谢!创建从城市到温度列表的地图,然后使用此新数据结构执行计算。