请各位高手帮忙看一下如何实现?谢谢了。
- Java code
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值);
[解决办法]
老实用循环写吧,用两个方法,一个用于计算指定用户所有数据总和的
public int SumByName(String name,List data){
}
一个用于统计指定用户,指定选项数据总和的
public int SumByNameAndOption(String name,String option,List data){
}
[解决办法]
一定要用OO的方式做的话,这里的代码供楼主参考
- Java code
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; }}