有三个组数(数组长度不定)
String[] users = { "张三", "李四", "黄五" };
String[] typs = { "学习", "品德","体育" };
String[] userTypes = { "一般", "良好", "优秀" };
我要的结果如下张三:学习-一般,李四:学习-一般,黄五:学习-一般
张三:学习-良好,李四:学习-一般,黄五:学习-一般
张三:学习-优秀,李四:学习-一般,黄五:学习-一般
张三:品德-一般,李四:学习-一般,黄五:学习-一般
....
张三:学习-一般,品德-一般, 李四:学习-一般,黄五:学习-一般
张三:学习-一般,品德-良好, 李四:学习-一般,黄五:学习-一般
张三:学习-一般,品德-一般, 李四:学习-一般,黄五:学习-一般
....
张三:学习-一般,品德-一般,体育-一般 李四:学习-一般,黄五:学习-一般
张三:学习-一般,品德-一般,体育-良好 李四:学习-一般,黄五:学习-一般
张三:学习-一般,品德-一般,体育-优秀 李四:学习-一般,黄五:学习-一般
.........
张三:学习-一般,品德-一般,体育-一般 李四:学习-一般,品德-一般,体育-一般,黄五:学习-一般,品德-一般,体育-一般即第一个数组每个数跟第二个数组里面的一个或N个数组合,
第二个数组的每个数跟第三个数组里抽的一个数组合

解决方案 »

  1.   

    假設 第一數組有 n1個,第二數組有 n2個,第三數組有 n3個。
    全組合式數是 n1 * (Cn2 1+ Cn2 2+....+Cn2 nc2) * n3。比較麻煩的只有中間部分,先做組合,產生二維數組。
    例如  typs[0]={"学习"}; typs[1]={"品德"}; typs[2]={"体育"};
          typs[3]={"学习","品德"}; typs[4]={"学习","体育"} typs[5]={"品德","体育"};
          typs[6]={"学习","品德","体育"};
    之後就容易了。
      

  2.   

    import java.util.*;
    public class test{
    public static void main(String[] arg)
    {
    List<String> list=new ArrayList<String>();
    List<String> use=new ArrayList<String>();
        String[] users = { "张三", "李四", "黄五" };
        String[] types = { "学习", "品德","体育", };
        String[] userTypes = { "一般", "良好", "优秀", };
          String str="";
     for(int j=0;j<types.length;j++)
    {
     for(int m=0;m<userTypes.length;m++)
    {   
         use.add(types[j]+userTypes[m]+",");
    }
    use.add(" ");
    }
        for(int i=0;i<4;i++)
    for(int j=0;j<4;j++)
    for(int m=0;m<4;m++)
    {
    for(int n=0;n<3;n++)
    {
    str+=users[n]+use.get(i)+use.get(4+j)+use.get(8+m);
    }
             list.add(str);
     str="";
    }
    System.out.println(list.size());
    for(String st:list)
    {
    System.out.println(st+"    ");
    }
    }
       }
    D:\java\test>java test
    64
    张三学习一般,品德一般,体育一般,李四学习一般,品德一般,体育一般,黄五学习一般,品德
    一般,体育一般,
    张三学习一般,品德一般,体育良好,李四学习一般,品德一般,体育良好,黄五学习一般,品德
    一般,体育良好,
    张三学习一般,品德一般,体育优秀,李四学习一般,品德一般,体育优秀,黄五学习一般,品德
    一般,体育优秀,
    张三学习一般,品德一般, 李四学习一般,品德一般, 黄五学习一般,品德一般,
    张三学习一般,品德良好,体育一般,李四学习一般,品德良好,体育一般,黄五学习一般,品德
    良好,体育一般,
    张三学习一般,品德良好,体育良好,李四学习一般,品德良好,体育良好,黄五学习一般,品德
    良好,体育良好,
    张三学习一般,品德良好,体育优秀,李四学习一般,品德良好,体育优秀,黄五学习一般,品德
    良好,体育优秀,
    张三学习一般,品德良好, 李四学习一般,品德良好, 黄五学习一般,品德良好,
    张三学习一般,品德优秀,体育一般,李四学习一般,品德优秀,体育一般,黄五学习一般,品德
    优秀,体育一般,
    张三学习一般,品德优秀,体育良好,李四学习一般,品德优秀,体育良好,黄五学习一般,品德
    优秀,体育良好,
    张三学习一般,品德优秀,体育优秀,李四学习一般,品德优秀,体育优秀,黄五学习一般,品德
    优秀,体育优秀,
    张三学习一般,品德优秀, 李四学习一般,品德优秀, 黄五学习一般,品德优秀,
    张三学习一般, 体育一般,李四学习一般, 体育一般,黄五学习一般, 体育一般,
    张三学习一般, 体育良好,李四学习一般, 体育良好,黄五学习一般, 体育良好,
    张三学习一般, 体育优秀,李四学习一般, 体育优秀,黄五学习一般, 体育优秀,
    张三学习一般,  李四学习一般,  黄五学习一般,
    张三学习良好,品德一般,体育一般,李四学习良好,品德一般,体育一般,黄五学习良好,品德
    一般,体育一般,
    张三学习良好,品德一般,体育良好,李四学习良好,品德一般,体育良好,黄五学习良好,品德
    一般,体育良好,
    张三学习良好,品德一般,体育优秀,李四学习良好,品德一般,体育优秀,黄五学习良好,品德
    一般,体育优秀,
    张三学习良好,品德一般, 李四学习良好,品德一般, 黄五学习良好,品德一般,
    张三学习良好,品德良好,体育一般,李四学习良好,品德良好,体育一般,黄五学习良好,品德
    良好,体育一般,
    张三学习良好,品德良好,体育良好,李四学习良好,品德良好,体育良好,黄五学习良好,品德
    良好,体育良好,
    张三学习良好,品德良好,体育优秀,李四学习良好,品德良好,体育优秀,黄五学习良好,品德
    良好,体育优秀,
    张三学习良好,品德良好, 李四学习良好,品德良好, 黄五学习良好,品德良好,
    张三学习良好,品德优秀,体育一般,李四学习良好,品德优秀,体育一般,黄五学习良好,品德
    优秀,体育一般,
    张三学习良好,品德优秀,体育良好,李四学习良好,品德优秀,体育良好,黄五学习良好,品德
    优秀,体育良好,
    张三学习良好,品德优秀,体育优秀,李四学习良好,品德优秀,体育优秀,黄五学习良好,品德
    优秀,体育优秀,
    张三学习良好,品德优秀, 李四学习良好,品德优秀, 黄五学习良好,品德优秀,
    张三学习良好, 体育一般,李四学习良好, 体育一般,黄五学习良好, 体育一般,
    张三学习良好, 体育良好,李四学习良好, 体育良好,黄五学习良好, 体育良好,
    张三学习良好, 体育优秀,李四学习良好, 体育优秀,黄五学习良好, 体育优秀,
    张三学习良好,  李四学习良好,  黄五学习良好,
    张三学习优秀,品德一般,体育一般,李四学习优秀,品德一般,体育一般,黄五学习优秀,品德
    一般,体育一般,
    张三学习优秀,品德一般,体育良好,李四学习优秀,品德一般,体育良好,黄五学习优秀,品德
    一般,体育良好,
    张三学习优秀,品德一般,体育优秀,李四学习优秀,品德一般,体育优秀,黄五学习优秀,品德
    一般,体育优秀,
    张三学习优秀,品德一般, 李四学习优秀,品德一般, 黄五学习优秀,品德一般,
    张三学习优秀,品德良好,体育一般,李四学习优秀,品德良好,体育一般,黄五学习优秀,品德
    良好,体育一般,
    张三学习优秀,品德良好,体育良好,李四学习优秀,品德良好,体育良好,黄五学习优秀,品德
    良好,体育良好,
    张三学习优秀,品德良好,体育优秀,李四学习优秀,品德良好,体育优秀,黄五学习优秀,品德
    良好,体育优秀,
    张三学习优秀,品德良好, 李四学习优秀,品德良好, 黄五学习优秀,品德良好,
    张三学习优秀,品德优秀,体育一般,李四学习优秀,品德优秀,体育一般,黄五学习优秀,品德
    优秀,体育一般,
    张三学习优秀,品德优秀,体育良好,李四学习优秀,品德优秀,体育良好,黄五学习优秀,品德
    优秀,体育良好,
    张三学习优秀,品德优秀,体育优秀,李四学习优秀,品德优秀,体育优秀,黄五学习优秀,品德
    优秀,体育优秀,
    张三学习优秀,品德优秀, 李四学习优秀,品德优秀, 黄五学习优秀,品德优秀,
    张三学习优秀, 体育一般,李四学习优秀, 体育一般,黄五学习优秀, 体育一般,
    张三学习优秀, 体育良好,李四学习优秀, 体育良好,黄五学习优秀, 体育良好,
    张三学习优秀, 体育优秀,李四学习优秀, 体育优秀,黄五学习优秀, 体育优秀,
    张三学习优秀,  李四学习优秀,  黄五学习优秀,
    张三 品德一般,体育一般,李四 品德一般,体育一般,黄五 品德一般,体育一般,
    张三 品德一般,体育良好,李四 品德一般,体育良好,黄五 品德一般,体育良好,
    张三 品德一般,体育优秀,李四 品德一般,体育优秀,黄五 品德一般,体育优秀,
    张三 品德一般, 李四 品德一般, 黄五 品德一般,
    张三 品德良好,体育一般,李四 品德良好,体育一般,黄五 品德良好,体育一般,
    张三 品德良好,体育良好,李四 品德良好,体育良好,黄五 品德良好,体育良好,
    张三 品德良好,体育优秀,李四 品德良好,体育优秀,黄五 品德良好,体育优秀,
    张三 品德良好, 李四 品德良好, 黄五 品德良好,
    张三 品德优秀,体育一般,李四 品德优秀,体育一般,黄五 品德优秀,体育一般,
    张三 品德优秀,体育良好,李四 品德优秀,体育良好,黄五 品德优秀,体育良好,
    张三 品德优秀,体育优秀,李四 品德优秀,体育优秀,黄五 品德优秀,体育优秀,
    张三 品德优秀, 李四 品德优秀, 黄五 品德优秀,
    张三  体育一般,李四  体育一般,黄五  体育一般,
    张三  体育良好,李四  体育良好,黄五  体育良好,
    张三  体育优秀,李四  体育优秀,黄五  体育优秀,
    张三   李四   黄五D:\java\test>
      

  3.   

    3个循环套就可以了
    首先设定一个对象(userinfo)有三个属性,姓名,科目,成绩
    循环套
    创建一个集合对象userlistfor(String str1: users){//分别得到用户
    for(String str2: typs){//分别得到科目
    for(String str3: userTypes){//分别得到成绩创建一个对象userinfo把str1, str2, str3分别set到对象就可以了
    然后加入到集合对象(userlist.add(userinfo))}
    }
    }for循环有好几种 自己摸索