我在 Java 中有一个问题。我有一个Map <ID, OBJ> mapState
这样的
ID OBJ
3 40
6 25
7 120
和一个整数值score=125
(例如)。mapState's OBJ
如果ID=3
有OBJ
> 分数,我想以这种方式减去分数,那么它应该立即125
从mapState
值中减去ID=3
。但如果ID=3
有OBJ < 125
那么它将检查下一个值。现在我有两个值ID=3
,ID=6
哪个是40+25
. 它会ID3's value + ID6's value>score
(40+25>125)
再次检查是否为真,然后减去它并返回剩余的地图。否则检查下一个值。
例如返回的最终地图应该是,在这种情况下
ID OBJ
3 0
6 0
7 60
如果您需要对此问题进行更多说明,请告诉我。
编辑:这是代码,只是无法弄清楚问题出在哪里-
Set set = map.keySet();
Iterator it= set.iterator();
int score= 125;
if(it.hasNext()){
Object id=it.next();
int val=(Integer) map.get(id);
int finalval;
if(val>score)
{
System.out.println("I");
finalval= val-score;
map.put(id, finalval);
}
else
{
System.out.println("II");
val=(Integer) map.get(id);
id=it.next();
val+=(Integer) map.get(id);
System.out.println(id);
if(val>score)
{
System.out.println("III");
finalval=val-score;
map.put(id, finalval);
}
else
{
System.out.println("IV");
id=it.next();
val+=(Integer) map.get(id);
System.out.println(id);
if(val>score)
{
System.out.println("V");
finalval=val-score;
map.put(id, finalval);
}
}
}
System.out.println(map);