import java.io.*;
import java.util.*;
class Solution {
public static void main (String[] args) {
HashMap<Integer, Integer> map = new HashMap<>();
long sq = 16;
int v = 8, u = 2;
int ans = 0;
map.put(u, map.getOrDefault(u, 0) + 1);
ans += map.getOrDefault(sq/v, 0);
System.out.println(ans);
}
}
答案应该是1,但它输出0。你知道为什么会这样吗?还是我遗漏了什么?
2条答案
按热度按时间2mbi3lxu1#
Map需要类型java.lang.integer作为键
更改为:
注意:原始数据类型int也可以工作。
这也会起作用:
gpfsuwkq2#
sq/v
分裂long
由int
,因此结果是long
,装箱至Long
当传递给map.getOrDefault(sq/v,0)
. 你没有Long
钥匙在你的房间里Map
,因此返回默认值0
.如果你改变了
sq
至int
,结果sq/v
也将是int
,和map.getOrDefault(sq/v,0)
将返回1。