随手写了个随机分组的代码

因为英语小组需要分组,所以写了这个程序。
输入分组总人数和每一组的人数(注意:最后剩下不足一组的,都会被分在最后一组里面)
代码:

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner reader = new Scanner(System.in);
		int total=reader.nextInt();//分组人数
		int group=reader.nextInt();//每组人数
		
		boolean victory[]=new boolean[total];//每人都属于没有分组状态
		for(int i=0;i<total;++i)
			victory[i]=false;
		
		boolean judge;//是否可以均分
		if(total%group==0)
			judge=true;
		else
			judge=false;
		
		if(judge) 
		{
			int remain=total;//剩下人数
			int count=0;//分组计数器,人数到达
			while(remain>0)
			{
				int random=(int)(Math.random()*total);
				if(victory[random]==false)//证明生成的随机数还没有分到
				{
				System.out.print(random+1+"  ");//加1是为了排除0
				victory[random]=true;//输出了,证明分组成功了
				++count;
				if(count==group)//分组人数到了要求
				{
					count=0;//组数清空
					System.out.println();//换行
				}
				--remain;//每次减少一个人
				}
			}
		}
		
		else//分组不能均分
		{
			int remain=total;//剩下人数
			int count=0;//分组计数器,人数到达
			while(remain>0)
			{
				int random=(int)(Math.random()*total);
				if(victory[random]==false)//证明生成的随机数还没有分到
				{
				System.out.print(random+1+"  ");//加1是为了排除0
				victory[random]=true;//输出了,证明分组成功了
				++count;
				if(count==group)//分组人数到了要求
				{
					count=0;//组数清空
					System.out.println();//换行
				}
				--remain;//每次减少一个人
				if(remain<group*2 &&count==0)//人数小于2组了,而且前面也已经都分完组了
				{
					break;//直接跳出循环
				}
				}
			}
		}
		for(int i=0;i<total;++i)
		{
			if(victory[i]==false)
				System.out.print(i+1+" ");
		}
	}
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值