【发布时间】:2018-12-27 15:32:51
【问题描述】:
我有一个Map<String, Integer> 和一个名为 globalValue 的整数。我的目标是用 globalValue 的百分比替换地图中的值,例如; (value1/globalValue)*100 并四舍五入。
我曾尝试直接在地图中进行除法(结果为 0),并尝试将我的整数转换为地图内外的双精度数(均导致类型不匹配)。
public Map<String, Integer> analyse() {
int globalValue = 0;
Map<String, Integer> m = new HashMap<String, Integer>();
for (int i = 0; i < array.length; i++) {
if (array[i].getTime() != null) {
globalValue = globalValue + array[i].getValue();
if (m.containsKey(array[i].getTime())) {
m.put(array[i].getTime(), m.get(array[i].getTime()) + array[i].getValue());
} else {
m.put(array[i].getTime(), array[i].getValue());
}
}
}
return m;
}
【问题讨论】:
-
为什么不制作
Double的地图而不是Integer? -
在您的
array上提供一些详细信息 -
代码中没有
(value1/globalValue)*100除法逻辑,你能解释一下你到底需要什么吗?要么除法逻辑?还是改写上面的代码? -
正如 GBlodgett 建议的那样,改用 Double 或尝试转换值
(Integer)? -
“我尝试直接在地图中进行除法(结果为 0)”很可能是因为您正在执行整数除法。将其中一个操作数设为双精度。但是,您当前的代码没有显示任何逻辑....
标签: java