对数学感到困惑

时间:2017-05-13 17:14:16

标签: java hashmap

public static int Alpha(){

    HashMap<Integer, Double> map = new HashMap<Integer, Double>();
    map.put(1,5.5);
    map.put(67,1.4);
    map.put(9,7.8);
    map.put(24,6.4);


    int ans = -1;
    double best = 0.0;
     for(int i : map.keySet()){
    if(map.get(i) > best){
     best = map.get(i);
     ans = i;
     }
     }
     return ans;

    }   

我不明白为什么会返回9.我的逻辑是For-each循环遍历每个键并且使用If语句它说:如果对于这些键中的任何一个键,如果它大于0.0,则设置最佳等于那个号码?它在密钥集中看到的第一个大于0.0的数字是1,所以不应该最好是1?

我也不理解ans = i行。那是做什么的?

对此特定代码的逐条解释将不胜感激。

1 个答案:

答案 0 :(得分:1)

您的代码返回9,因为这是具有最高值的键...

map.put(1, 5.5);
map.put(67, 1.4);
map.put(9, 7.8);   ///this
map.put(24, 6.4);

这就是你的代码在这种情况下所做的事情

for (int i : map.keySet()) {
        if (map.get(i) > best) {