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行。那是做什么的?
对此特定代码的逐条解释将不胜感激。
答案 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) {