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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 爱吃桃子的猫 于 2014-5-5 14:57 编辑

基础测试题:随机生成10个1-100之间的数放到ArrayList中,要求这10个数不能重复,并且都是偶数。
喵是小菜一枚,刚开始这个问题是利用for循环解决的,然后在网上看到了另一种用while循环解决类似问题的方法,比较了一下两种方法各有优劣,喵会继续努力,加油加油!!!
方法一:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Collections;

  6. namespace test9
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             //随机生成10个1-100之间的数放到ArrayList中,要求这10个数不能重复,并且都是偶数。
  13.             Random r = new Random();//生成随机数
  14.             ArrayList arryList = new ArrayList();
  15. for (int i = 1; i <= 10; i++)
  16.             {
  17.                 //生成1-100之间的随机数
  18.                 int number = r.Next(1, 101);
  19.                 //这是一个数,生成十个不同的随机数
  20.                 if (!arryList.Contains(number) && number % 2 == 0)//看是否包含相同的偶数
  21.                 {
  22.                     arryList.Add(number);//如果不相同且是偶数则添加随机数
  23.                 }

  24.                 else
  25.                 {
  26.                     i--;//当产生的随机数跟集合里面的数不包含时,我们要把次数减一次
  27.                 }
  28.             }
  29.             for (int j = 0; j < arryList.Count; j++)//循环遍历
  30.             {
  31.                 Console.WriteLine(arryList[j]);//向控制台输出随机数
  32.             }
  33.             Console.ReadKey();//当程序运行到这里,会停止到这里,等待用户按一个键再继续执行。
  34.         }
  35.     }
  36. }
复制代码

方法二:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Collections;

  6. namespace test9
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             //随机生成10个1-100之间的数放到ArrayList中,要求这10个数不能重复,并且都是偶数。
  13.             Random r = new Random();//生成随机数
  14.             ArrayList arryList = new ArrayList();
  15.             while (true)
  16.             {
  17.                 if (arryList.Count == 10)
  18.                     break;
  19.                 int num = r.Next(1, 101);
  20.                 if (!arryList.Contains(num) && num % 2 == 0)
  21.                 {
  22.                     arryList.Add(num);
  23.                 }
  24.             }
  25.             foreach (var v in arryList)//foreach遍历
  26.                 Console.WriteLine(v);
  27.             Console.ReadKey();
  28.         }
  29.     }
  30. }
复制代码



7 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报 1 0
for循环哪里,很有趣啊,是偶数且不相同就放进去,不是就是再次增加循环次数 直到挑出十个 终止循环
回复 使用道具 举报 0 1
不错,猫猫。
回复 使用道具 举报
我觉得这种情况肯定while的效率要高点,至少从代码量上来说,少一些
回复 使用道具 举报 1 0
我觉得可以把for中第三个条件i+给留个空【最好还是不要这样做】,然后把if下面的else给干掉,把i++放到if里面去,
回复 使用道具 举报 1 0
顶1下                     
回复 使用道具 举报
好给力!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马