List<Object[]> list = new List<Object[]>();Object[] obj1 = new Object[3];
obj1[0] ="用户1";   //用户名
obj1[1] ="10";    //数值
obj1[2] = "A";    //类型Object[] obj2 = new Object[3];
obj2[0] ="用户1";
obj2[1] ="20";
obj2[2] = "B";Object[] obj3 = new Object[3];
obj3[0] ="用户1";
obj3[1] ="30";
obj3[2] = "C";Object[] obj4 = new Object[3];
obj4[0] ="用户1";
obj4[1] ="40";
obj4[2] = "D";//===============================Object[] obj5 = new Object[3];
obj5[0] ="用户2";
obj5[1] ="11";
obj5[2] = "A";Object[] obj6 = new Object[3];
obj6[0] ="用户2";
obj6[1] ="33";
obj6[2] = "B";Object[] obj7 = new Object[3];
obj7[0] ="用户2";
obj7[1] ="30";
obj7[2] = "C";Object[] obj8 = new Object[3];
obj8[0] ="用户2";
obj8[1] ="52";
obj8[2] = "D";list.add(obj1);
list.add(obj2);
list.add(obj3);
list.add(obj4);
list.add(obj5);
list.add(obj6);
list.add(obj7);
list.add(obj8);///现在想根据这些数据,程序将如何实现  算出以下结果 :  //用户1 A值= A值/(A值+B值+C值+D值);
//用户1 B值= B值/(A值+B值+C值+D值);
//用户1 C值= D值/(A值+B值+C值+D值);
//用户1 C值= D值/(A值+B值+C值+D值);//用户2 A值= A值/(A值+B值+C值+D值);
//用户2 B值= B值/(A值+B值+C值+D值);
//用户2 C值= D值/(A值+B值+C值+D值);
//用户2 C值= D值/(A值+B值+C值+D值);

解决方案 »

  1.   

    这个应该用数据库做,记录输入到数据库中,一条SQL就查出来了。
      

  2.   

    老实用循环写吧,用两个方法,一个用于计算指定用户所有数据总和的
    public int SumByName(String name,List data){
    }
    一个用于统计指定用户,指定选项数据总和的
    public int SumByNameAndOption(String name,String option,List data){
    }
      

  3.   

    一定要用OO的方式做的话,这里的代码供楼主参考import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;public class ListDemos1 { /**
     * @param args
     */
    public static void main(String[] args) {
    List<Object[]> list = new ArrayList<Object[]>(); Object[] obj1 = new Object[3];
    obj1[0] ="用户1";   //用户名
    obj1[1] ="10";    //数值
    obj1[2] = "A";    //类型 Object[] obj2 = new Object[3];
    obj2[0] ="用户1";
    obj2[1] ="20";
    obj2[2] = "B"; Object[] obj3 = new Object[3];
    obj3[0] ="用户1";
    obj3[1] ="30";
    obj3[2] = "C"; Object[] obj4 = new Object[3];
    obj4[0] ="用户1";
    obj4[1] ="40";
    obj4[2] = "D"; //=============================== Object[] obj5 = new Object[3];
    obj5[0] ="用户2";
    obj5[1] ="11";
    obj5[2] = "A"; Object[] obj6 = new Object[3];
    obj6[0] ="用户2";
    obj6[1] ="33";
    obj6[2] = "B"; Object[] obj7 = new Object[3];
    obj7[0] ="用户2";
    obj7[1] ="30";
    obj7[2] = "C"; Object[] obj8 = new Object[3];
    obj8[0] ="用户2";
    obj8[1] ="52";
    obj8[2] = "D"; list.add(obj1);
    list.add(obj2);
    list.add(obj3);
    list.add(obj4);
    list.add(obj5);
    list.add(obj6);
    list.add(obj7);
    list.add(obj8); ///现在想根据这些数据,程序将如何实现  算出以下结果 :   //用户1 A值= A值/(A值+B值+C值+D值);
    //用户1 B值= B值/(A值+B值+C值+D值);
    //用户1 C值= D值/(A值+B值+C值+D值);
    //用户1 C值= D值/(A值+B值+C值+D值); //用户2 A值= A值/(A值+B值+C值+D值);
    //用户2 B值= B值/(A值+B值+C值+D值);
    //用户2 C值= D值/(A值+B值+C值+D值);
    //用户2 C值= D值/(A值+B值+C值+D值);

    Map<String, User> users = new HashMap<String, User>();
    for(Object[] item: list){
    if (!users.containsKey(item[0])){
    User u = new User();
    u.name = (String)item[0];
    users.put((String)item[0], u);
    }
    User u = users.get(item[0]);
    switch (((String)item[2]).charAt(0)){
    case 'A' : u.a = Integer.parseInt((String)item[1]); break;
    case 'B' : u.b = Integer.parseInt((String)item[1]); break;
    case 'C' : u.c = Integer.parseInt((String)item[1]); break;
    case 'D' : u.d = Integer.parseInt((String)item[1]);
    }
    }
    for (String name: users.keySet()){
    User u = users.get(name);
    System.out.printf("%s A值=%f;\n", u.name, (float)u.a/u.getTotal());
    System.out.printf("%s B值=%f;\n", u.name, (float)u.b/u.getTotal());
    System.out.printf("%s C值=%f;\n", u.name, (float)u.c/u.getTotal());
    System.out.printf("%s D值=%f;\n", u.name, (float)u.d/u.getTotal());
    }
    }

    public static class User {
    String name;
    public int getTotal() {
    return a+b+c+d;
    }
    int a;
    int b;
    int c;
    int d;
    }}
      

  4.   

    我也想用sql。但是这些数据已经是通过很复杂的sql计算出来的。 再加sql怕影响查询效率。所以就想放在java程序中计算。 谢谢你。