A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class Program
    {
        static void Main(string[] args)
        {
            Random r = new Random();
            int[] arr=new int[10];
            int a;
            for (int i = 0; i < arr.Length; i++)
            {
                do
                {
                    a = r.Next(0, 100);
                    while (a % 2 != 0)
                    {
                        a = r.Next(0, 100);
                    }
                    if (a > 0)
                    {
                        for (int j = 0; j < i; j++)
                        {
                            if (arr[j] == a)
                            {
                                continue;
                            }
                        }
                    }
                    arr[i] = a;
                    break;
                } while (true);
            }
            foreach (var item in arr)
            {
                Console.WriteLine(item);
            }
        }
    }

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

3 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
有重复,有相同
回复 使用道具 举报
本帖最后由 陈晖 于 2013-4-28 21:41 编辑

你这个代码有重复的结果,有图有真相。

            //实例化一个Random对象,用来产生1-100之间的随机数。
            Random r = new Random();
            //定义一个存放10数字长度的数组。
            int[] arr = new int[10];
            //声明一个临时变量。
            int a;
            for (int i = 0; i < arr.Length; i++)
            {
                do
                {
                    //产生一个0-100之间的随机数,可以取到0,但取不到100,范围好像有问题?
                    a = r.Next(0, 100);
                    //这里是判断产生的数必须是偶数,这个搞不懂为什么要这个while循环?
                    //while (a % 2 != 0)
                    //{
                    //    a = r.Next(0, 100);
                    //}
                    //这里判断产生的数必须是大于0的,其实在上面产生随机数范围时可以改成:
                    //a = r.Next(1, 101);就可以保证从1开始,也能够取到100。
                    //Next()方法是取的到下界值,但取不到上界值。
                    //那样可以将if判断去掉了。
                    //if (a > 0)
                    //{
                    //判断现在取到的值是否与已存在的值有重复?有重复就进行下一次循环。
                    //但是continue是不执行continue所在循环后面的代码,
                    //这里continue所在循环是for循环。就算重复的话,a 也会加到数组中去的。
                    //可以在里面做个处理。
                    for (int j = 0; j < i; j++)
                    {
                        //如果是重复的,就将a赋值为0。并跳出循环。
                        if (arr[j] == a)
                        {
                            a = 0;
                            break;
                        }
                    }
                    //}
                    //如果a的值为0,就继续下一次循环,不将a的值加到数组中去。
                    if (a != 0)
                    {
                        arr = a;
                    }
                    else
                    {
                        continue;
                    }
                    break;
                } while (true);
            }
            //已知数据类型,就将var改为int即可,不便于阅读。
            foreach (var item in arr)
            {
                Console.WriteLine(item);
            }
以上纯属个人想法,请多多指教{:soso_e181:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马