在main函数中完成下面功能:实现对班上同学的自动分组,从键盘输入一个整数m(m在2到10之间,表示每组需要m个人,最后不足m的构成一组),程序就能按照这个整数对全班58个人自动分组,(每组成员都是随机产生的),并输出各组成员的情况。
------解决方案--------------------------------------------------------
- Java code
static String[][] sp(final String[] cs, int tlen) { if (cs == null || tlen < 0) { return null; } String[] c = new String[cs.length]; System.arraycopy(cs, 0, c, 0, c.length); //打乱 Random ran = new Random(); for (int i = c.length; i > 1; i--) { //产生随机数 int r = ran.nextInt(i); //交换 String buf = c[r]; c[r] = c[i - 1]; c[i - 1] = buf; } //分组后的组数 int len = cs.length / tlen; if (cs.length > len * tlen) { len++; } String[][] re = new String[len][]; //分组 for (int i = 0, t = 0; i < cs.length; i += tlen, t++) { int clen; if (i + tlen > cs.length) { clen = cs.length - i; } else { clen = tlen; } String[] cstr = new String[clen]; System.arraycopy(c, i, cstr, 0, clen); re[t] = cstr; } return re; }
------解决方案--------------------------------------------------------
- Java code
public List<String[]> group(String [] str,int m){ List<String> _student = new ArrayList<String>(); for(int i=0;i<str.length;i++){ _student.add(str[i]); } int n = _student.size(); List <String[]> student = new ArrayList<String[]>(); for(int i=0;i<m;i++){ int size = n%m==0?n/m:(i==(m-1)?((n/m+1)*m-n):n/(m-1)); String [] s = new String[size]; int _size = _student.size(); for(int j=0;j<size;j++){ int index = (int)(Math.random()*_size); s[j] = _student.get(index); _student.remove(index); _size--; } student.add(s); } return student; }