2017-05-13 8 views
-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を返している
+2

「それはより大きいかどう0.0 " - いいえ、それが現在の値bestより大きい場合。また、一度ベストを決めたら、止まらない。あなたは続ける。 – user2357112

+2

デバッガを使用して見つけてください – Jens

+0

また、HashMapsは注文保証を提供せず、キーと値を混在させています。 – user2357112

答えて

1

...

あなたのコードは、この状態で、ここでやっていることである
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) { 
関連する問題