2013-08-27 41 views
-3

我在Java中遇到問題。我有一個Map <ID, OBJ> mapState這樣從Java中的映射值中劃分整數值

ID OBJ 
3  40 
6  25 
7  120 

和一個整數值score=125(例如)。 我想從mapState's OBJ以這種方式減去分數,如果ID=3OBJ>得分,那麼它應該從mapState減去125值,其中ID=3。但如果ID=3OBJ < 125那麼它會檢查下一個值。現在我有兩個值ID=3ID=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); 
+2

您能告訴我們您的嘗試嗎? –

+0

問題在哪裏?你剛纔描述了你需要的algorythm!只需添加一些臨時變量來記住一組ID以減去 – Piro

+0

有些人只是喜歡投票而不是幫助。 – AzAh

回答

0

得到了它的工作只是不能弄明白。

if(it.hasNext()){ 
      Object id=it.next(); 
      int val=(Integer) map.get(id); 
      int finalval; 
      if(val>score) 
      { 
       finalval= val-score; 
       map.put(id, finalval); 
      } 
      else 
      { 
       val=(Integer) map.get(id); 
       map.put(id, "0"); 
       id=it.next(); 
       val+=(Integer) map.get(id); 
       if(val>score) 
       { 
        finalval=val-score; 
        map.put(id, finalval); 
       } 
       else 
       { 
        map.put(id, "0"); 
        id=it.next(); 
        val+=(Integer) map.get(id); 
        System.out.println(id); 
        if(val>=score) 
        { 
         finalval=val-score; 
         map.put(id, finalval); 
        } 
       } 

      } 
      System.out.println(map); 
     } 
+0

我們可以使用循環進行優化。 – AzAh