-1
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文が次のようになることです。Ifこれらのキーのいずれかが0.0より大きい値がその数に最も等しく設定されていますか? 0.0より大きいキーセットで最初に表示される数字は1です。したがって、1になるのが最も良いはずはありません。数学に混乱しています
また、ans = i行もわかりません。それは何ですか?
これを部分的に説明すると、の特定のコードが理解できます。
それが最高値を持つキーですので、あなたのコードは9を返している
「それはより大きいかどう0.0 " - いいえ、それが現在の値bestより大きい場合。また、一度ベストを決めたら、止まらない。あなたは続ける。 – user2357112
デバッガを使用して見つけてください – Jens
また、HashMapsは注文保証を提供せず、キーと値を混在させています。 – user2357112