2013-08-27 6 views
-3

Java에서 문제가 있습니다. I이자바의지도 값에서 정수 값을 나눕니다.

ID OBJ 
3  40 
6  25 
7  120 

같은 Map <ID, OBJ> mapState하고 (예를 들어) 정수 값 score=125있다. mapState's OBJ에서 점수를 뺀 다음 ID=3OBJ> 점수 인 경우 125mapState 값에서 바로 빼십시오. 여기서 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

관련 문제