-3

我在 Java 中有一个问题。我有一个Map <ID, OBJ> mapState这样的

ID    OBJ
3     40
6     25
7     120

和一个整数值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

如果您需要对此问题进行更多说明,请告诉我。

编辑:这是代码,只是无法弄清楚问题出在哪里-

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);
4

1 回答 1

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);
        }
于 2013-08-27T12:18:07.777 回答