首页 新闻 会员 周边 捐助

JAVA分组

0
[已解决问题] 解决于 2018-03-08 10:53

某班有45名学生,男生36名,女生9名。编写程序将学生分成9组,每组男女生人数相等。

枫过留香的主页 枫过留香 | 初学一级 | 园豆:160
提问于:2018-03-08 09:45
< >
分享
最佳答案
0

这是用C#写的,和java差不多的。

按照你的逻辑实现的代码。我规定了分组的顺序,一一分组,比如1,2,3,4男生分到第一组。你也可以随机分组。使用Random随机类,再用一个hash就可以做到。

 

如果班级人数你给的是个变量,男生人数和女生人数也是变量,分的组数也是个变量。那下面的就是错的了。如果你想问的是这个,我就再写一种输入数据是变量的。

class Program
    {
        static void Main(string[] args)
        {
          
          
            int[] b = new int[37];//男生数组,编号1,2,3,4....36
            int[] g = new int[10];//女生数组,编号37,38,39....45
            int[,] ans = new int[9,10];
            for (int i = 1; i <= 35; i++)
            {
                b[i - 1] = i;
            }
            for (int i = 37; i <= 45; i++)
            {
                g[i - 37] = i;
            }
            int boy = 0;int girl =0 ;
            for (int i = 0; i < 9;i++)
            {
                for (int j = 0; j < 5;j++)
                {
                    if (j < 4)
                        ans[i, j] = b[boy++];
                    else
                        ans[i, j] = g[girl++];
                }
            }

            for (int i = 1; i <=9;i++)
            {
                Console.WriteLine(""+i+"组编号如下");
                for (int j = 0; j < 5;j++)
                {
                    Console.Write(ans[i-1,j] + " ");
                }
            }

        }
    }
奖励园豆:5
Shendu.CC | 老鸟四级 |园豆:2138 | 2018-03-08 10:46

感谢!

枫过留香 | 园豆:160 (初学一级) | 2018-03-08 10:53

5个豆子,我也是穷怕了

枫过留香 | 园豆:160 (初学一级) | 2018-03-08 10:56

@枫过留香: 谢谢,蚊子再小也是肉!我还以为没有豆子。

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-08 10:57

@Shendu.cc: 你能用Random帮我写一些随机分组吗。人数和组数不是变量

枫过留香 | 园豆:160 (初学一级) | 2018-03-08 10:59

@枫过留香: 

随机结果:

 

 

 

 

第1组编号如下

22 19 21 2 39 第2组编号如下

16 34 33 15 41 第3组编号如下

9 5 29 32 42 第4组编号如下

8 14 27 17 37 第5组编号如下

12 26 18 13 44 第6组编号如下

10 6 11 31 45 第7组编号如下

25 1 36 35 40 第8组编号如下

28 20 4 23 38 第9组编号如下

3 7 24 30 43

 

代码如下:

  class Program
    {
        public static int[] b = new int[37];//男生数组,编号1,2,3,4....36
        public static int[] g = new int[10];//女生数组,编号37,38,39....45
        public static int[] tagb = new int[37];//标记男生是否被分组
        public static int[] tagg = new int[10];//标记女生是否被分组
        public static int[,] ans = new int[9, 10];
        public static int boy = 36; 
        public static int girl = 9;
        static void Main(string[] args)
        {
          
             
          
            for (int i = 1; i <= 36; i++)
            {
                b[i - 1] = i;
                tagb[i - 1] = 0;
            }
            for (int i = 37; i <= 45; i++)
            {
                g[i - 37] = i;
                tagg[i - 37] = 0;
            }
            Random r = new Random();
           
            for (int i = 0; i < 9;i++)
            {
                for (int j = 0; j < 5;j++)
                {
                    if (j < 4)
                    {
                        int x = r.Next(0, boy);
                        ans[i, j] = b[x];
                        fun(x);

                    }
                    else
                    {
                        int x = r.Next(0, girl);
                        ans[i, j] = g[x];
                        fun2(x);
                    }
                       
                }
            }

            for (int i = 1; i <=9;i++)
            {
                Console.WriteLine(""+i+"组编号如下");
                for (int j = 0; j < 5;j++)
                {
                    Console.Write(ans[i-1,j] + " ");
                }
            }

        }

        public static void fun(int x)
        {
            for (int i = x; i < 36;i++)
            {
                b[i] = b[i + 1];
            }
            boy--;
        }

        public static void fun2(int x)
        {
            for (int i = x; i < 9; i++)
            {
                g[i] = g[i + 1];
            }
            girl--;
        }
    }
Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-08 11:18

@Shendu.cc: java里不能"int[,]"哦。

枫过留香 | 园豆:160 (初学一级) | 2018-03-08 11:22

@枫过留香: 我用C#的,我电脑里没有java的编译软件。你就用java的int[][] 一样的,改一下就行。

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-08 11:23

@Shendu.cc: 那个Next,WriteLine,Write方法是什么呢

枫过留香 | 园豆:160 (初学一级) | 2018-03-08 11:31

@枫过留香: java的应该是NextInt  。WriteLine是System.out.println  Write是System.out.print.

你这5个园豆,好赚啊。

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-08 11:33

@Shendu.cc: 嘿嘿,学艺不精,见笑了哈

枫过留香 | 园豆:160 (初学一级) | 2018-03-08 11:35

@枫过留香: 一起学习,一起学习。

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-08 11:38
其他回答(2)
0

x*9=36

y*9=9

是这个意思吗?

吴瑞祥 | 园豆:29449 (高人七级) | 2018-03-08 09:55

就是用两个数组,一个存男生学号,一个存女生学号。然后随机分成9组。可是我不会代码

支持(0) 反对(0) 枫过留香 | 园豆:160 (初学一级) | 2018-03-08 09:58
0

感觉可以用递归完成

ll...ll | 园豆:233 (菜鸟二级) | 2018-03-08 10:05

求救

支持(0) 反对(0) 枫过留香 | 园豆:160 (初学一级) | 2018-03-08 10:07

@枫过留香: 每个分组的人数可以不同吧

支持(0) 反对(0) ll...ll | 园豆:233 (菜鸟二级) | 2018-03-08 10:17

@小鹿L: 9组,每组五个人啊四男一女

支持(0) 反对(0) 枫过留香 | 园豆:160 (初学一级) | 2018-03-08 10:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册