我在Java中遇到問題。我有一個Map <ID, OBJ> mapState
這樣從Java中的映射值中劃分整數值
ID OBJ
3 40
6 25
7 120
和一個整數值score=125
(例如)。 我想從mapState's OBJ
以這種方式減去分數,如果ID=3
有OBJ
>得分,那麼它應該從mapState
減去125
值,其中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
讓我知道如果你需要在這個問題上更多的澄清。
編輯:這裏是代碼哪裏是problem--
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);
您能告訴我們您的嘗試嗎? –
問題在哪裏?你剛纔描述了你需要的algorythm!只需添加一些臨時變量來記住一組ID以減去 – Piro
有些人只是喜歡投票而不是幫助。 – AzAh