结贴的时候按回复人平均给分   这个方法应该如何写呢     必要条件    总楼层数    总分数    回复ID(不重复)(应该是个LIST)针对LIST里的回复ID逐个给分有心情的写个方法出来看看

解决方案 »

  1.   


    public class Reply {    private int id;
        
        private int Score;    // getter, setter;
    }
            // 总分
            int totalScore = 100;
            // 初始化所有回帖
            List<Reply> list = new ArrayList<Reply>();
            list.add(new Reply(){{ setId(1); }});
            list.add(new Reply(){{ setId(2); }});
            list.add(new Reply(){{ setId(3); }});
            list.add(new Reply(){{ setId(4); }});
            list.add(new Reply(){{ setId(5); }});
            list.add(new Reply(){{ setId(5); }});
            list.add(new Reply(){{ setId(6); }});
            // 临时变量,滤重用
            Set<Integer> set = new HashSet<Integer>();
            
            // 计算平均给分
            for (Reply reply : list) {
                set.add(reply.getId());
            }
            int scorePerReply = totalScore / set.size();
            
            // 给分
            set.clear();
            for (Reply reply : list) {
                if (!set.contains(reply.getId())) {
                    reply.setScore(scorePerReply);
                    set.add(reply.getId());
                }
            }
            
            // 打印
            for (Reply reply : list) {
                System.out.println( reply.getId() + ":" + reply.getScore());
            }
      

  2.   

    SF貌似没有考虑有余数的情况   还有需要过滤掉重复ID
      

  3.   

    顶了
    JF
    看不懂~
    初学jsp
      

  4.   

    其实用 set就可以了 因为set本身的内容就是不重复的。
      

  5.   

    我觉得使用一个Set就可以排除ID重复的问题,
    具体实现没想~!
      

  6.   


    package score;import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;public class Test { static List<User> list = new ArrayList<User>(); //用户列表

    public static void main(String[] args) throws Exception {

    String userId = "0"; //楼主
    int sum = 100; //总分
    int n = 0; //回复人数 //初始化用户列表
    User u0 = new User();
    u0.setId("0");
    u0.setName("0");
    u0.setScore(0);
    list.add(u0);

    User u1 = new User();
    u1.setId("1");
    u1.setName("1");
    u1.setScore(10);
    list.add(u1);

    User u2 = new User();
    u2.setId("2");
    u2.setName("2");
    u2.setScore(20);
    list.add(u2);

    User u3 = new User();
    u3.setId("3");
    u3.setName("3");
    u3.setScore(30);
    list.add(u3);

    /*回复list*/
    List<Re> rList = new ArrayList<Re>(); Re r1 = new Re();
    r1.setReId("1");
    r1.setDate("2009-02-12 09:10");
    rList.add(r1);

    Re r2 = new Re();
    r2.setReId("2");
    r2.setDate("2009-10-10 10:20");
    rList.add(r2);

    Re r3 = new Re();
    r3.setReId("3");
    r3.setDate("2010-01-15 15:30");
    rList.add(r3);

    Re r4 = new Re();
    r4.setReId("2");
    r4.setDate("2010-02-10 10:40");
    rList.add(r4);

    Re r5 = new Re();
    r5.setReId("0");
    r5.setDate("2009-07-06 08:50");
    rList.add(r5);

    List<User> returnlist = new ArrayList<User>();

    //计算回复人数,去除重复,除去楼主自己
    Map<String, String> reMap = new HashMap<String, String>(); //回复的人
    for (Iterator iter = rList.iterator(); iter.hasNext();) {  
    Re r = (Re) iter.next();
    String id = r.getReId();
    if (!id.equals(userId)) {
    if (!reMap.containsKey(id)) {
    reMap.put(id, id);
    n++;
    }
    }
    }

    int pr = sum/n; //平均分
    int yu = sum - pr*n; //不能整除,余数

    //给回复的人平均分配分数
    for (Iterator iter = reMap.values().iterator(); iter.hasNext();) {  
    String id = (String) iter.next();
    User u = getUserById(id);
    int score = u.getScore();
    u.setScore(score + pr);
    returnlist.add(u);
    }
    //有余数,返回给楼主
    // if (yu > 0) {
    User u = getUserById(userId);
    int score = u.getScore();
    u.setScore(score + yu);
    returnlist.add(u);
    // }

    System.out.println(pr);
    } public static User getUserById(String id) {
    User u = null;
    for (Iterator iter = list.iterator(); iter.hasNext();) {  
    u = (User) iter.next();
    if (u.getId().equals(id)) {
    break;
    }
    }
    return u;
    }
    }