【问题标题】:Find the average of String Array求字符串数组的平均值
【发布时间】:2015-10-20 18:55:24
【问题描述】:

我有一个String 数组来表示乘客的国籍;

String[] strNationality = new String[];

用户可以输入他们喜欢的任何国籍。但是我必须找到平均国籍。所以,例如,如果有五个国籍的人在公共汽车上;德语,德语,德语,法语,西班牙语。我可以看到德语显然是看它的平均值,但是创建计算平均值的方法的最佳方法是什么?

【问题讨论】:

  • average 是一组数字而不是字符串的函数。您需要先定义字符串的平均值
  • 我认为你的意思是“模式”,意思是在给定的集合中拥有最多的国籍。
  • 术语“平均”不适用于非数值。您可能是指人数最多的国籍。

标签: java arrays average


【解决方案1】:

如果国籍数量未知,我将使用Map 将国籍存储为key,将计数存储为value。如果存在下一个国籍,则在 Map 对象中增加该国籍的值。如果没有,则创建一个新的并将其添加到Map 对象中。

Map<String, Integer> nationalityCount = new Map<String, Integer>();
for(int i = 0 ; i < strNationality.length(); i++) {
    String nationality = strNationality[i];
    if(nationalityCount.containsKey(nationality) {
        int newCount = nationalityCount.get(nationality) + 1; 
        nationalityCount.put(nationality, newCount);
    }
    else {
        nationalityCount.put(nationality, 1);
    }
}

【讨论】:

    【解决方案2】:
    String[] strNationality = new String[]; //this array must be filled first.
    
    
    string _MajorNationality = "";
    int _RepeatedTimes = 0;
    for(int i = 0; i < strNationality.length; i++){
        int currentRepeat = 0;
        for(int j = i; j < strNationality.length; j++){
            if(strNationality[i].equals(strNationality[j])){
                currentRepeat++;
            }
        }
        if(_RepeatedTimes < currentRepeat){
            _MajorNationality = strNationality[i];
            _RepeatedTimes = currentRepeat;
        }
    }
    
    //_MajorNationality would be the most repeated nationality.
    //_RepeatedTimes would be how many times it repeated.
    

    【讨论】:

      【解决方案3】:

      我假设您的平均意图是指重复次数最多的国家/地区名称。 您可以使用 HashMap 数据结构。

      HashMap:其中 String 是国家名称,Integer 是计数。

      一旦你完成了所有的输入,你只需要遍历 HashMap 以找到最大值部分并打印相应的关键部分。

      http://docs.oracle.com/javase/7/docs/api/java/util/Map.html

      在你的情况下,它看起来像:

      键 -> 值 德国 -> 3 法语 -> 1 西班牙语 -> 1

      遍历地图的 VALUE 部分将帮助您确定 3 是最大的,它的关键德国是您应该打印的那个。

      算法如下所示:

      1. 从国家/地区数组中读取每个条目。
      2. 如果当前国家不在HashMap中,则将其添加到Map中,KEY为国家名称,VALUE为1。
      3. 如果当前国家/地区存在于 HashMap 中,则将现有条目更新为 VALUE 为 2。
      4. 重复上述步骤,直到阵列被完全读取。
      5. 遍历地图以找到最高价值。
      6. 获取最高VALUE对应的KEY和 打印出来。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-15
        • 1970-01-01
        • 2018-04-09
        • 2018-01-03
        • 2015-10-29
        • 1970-01-01
        相关资源
        最近更新 更多