黑马程序员技术交流社区

标题: 好长的 if -else 代码 谁有更好的注意 [打印本页]

作者: 秦二江    时间: 2013-5-21 11:44
标题: 好长的 if -else 代码 谁有更好的注意
本帖最后由 秦二江 于 2013-5-22 23:40 编辑

编写一个掷筛子100次的程序,并打印出各种点数的出现次数。

            // 创建一个 随机数的对象
            Random r = new Random();
            // 这些变量 分别用来 计算 1 到 6 出现的次数
            int a=0, b=0, c=0, d=0, e=0, f=0;
            // 循环 100次
            for (int i = 1; i <=100;i++ )
            {
                // 掷出一个1 到 6 的随机数
              int number= r.Next(1, 7);
               
              Console.WriteLine("第{0}次掷出{1}",i,number);
                if(number==1)
                {
                    a++;
                }
                else if(number==2)
                {
                    b++;
                }
                else if (number==3)
                {
                    c++;
                }
                else if(number ==4)
                {
                   d++;
                }
                else if(number==5)
                {
                    e++;
                }
                else
                {
                    f++;
                }
            }

           

            Console.WriteLine("1 出现{0}次 2 出现{1}次 3 出现{2}次 4 出现{3}次 5 出现{4}次 6 出现{5}次",a,b,c,d,e,f);

            Console.ReadKey();
作者: SOAR    时间: 2013-5-21 11:57
试试switch吧。
作者: a724228803    时间: 2013-5-21 12:29
static void Main(string[] args)
        {
            Random r = new Random();
            // 这些变量 分别用来 计算 1 到 6 出现的次数
            int[] a = new int[7];
                  
           //注意:为了方便理解,更直观!我声明了长度为7 的数组,a[0]空着没用,a[1]-a[6]对应累加摇出来的数字!
            //为了对应 循环变量从1开始赋值的
            // 循环 100次
            for (int i = 1; i <= 100; i++)
            {
                // 掷出一个1 到 6 的随机数
                int number = r.Next(1, 7);
                Console.WriteLine("第{0}次掷出{1}", i, number);
                for (int j = 1; j < 7; j++)
                {
                    if (number == j )
                        a[j]++;

                }

              
            }
            for (int i = 1; i < 7; i++)
            {
                Console.WriteLine("{0} 出现{1}次", i, a[i]);

            }


            Console.ReadKey();
        }

关键在于你的思路 。。。。找到 各种语句的巧妙之处。。。
作者: a724228803    时间: 2013-5-21 12:32
for (int i = 1; i <= 100; i++)
            {
                // 掷出一个1 到 6 的随机数
                int number = r.Next(1, 7);
                Console.WriteLine("第{0}次掷出{1}", i, number);

                for (int j = 1; j < 7; j++)
                {
                    if (number == j )
                        a[j]++;
                }              
            }

            for (int i = 1; i < 7; i++)
            {
                Console.WriteLine("{0} 出现{1}次", i, a);
            }


作者: a724228803    时间: 2013-5-21 12:33
  Console.WriteLine("{0} 出现{1}次", i, a[i]);

作者: 高文咪    时间: 2013-5-21 13:34
你可以用switch循环
作者: 曾大鹏    时间: 2013-5-21 14:13
直接开一个数组 表示对应数字出现的次数
多省事啊
  1. //定义一个数组统计对应数字的出现的次数
  2.             int[] count=new int[]{0,0,0,0,0,0};
  3.             //创建一个随机数产生器
  4.             Random rand = new Random();
  5.             //循环遍历100次
  6.             for (int i = 0; i < 100; i++)
  7.             {
  8.                 int n = rand.Next(1, 7);//随机产生1~6之间的整数
  9.                 count[n - 1]++;//对应的数字的次数+1
  10.             }
  11.             //循环输出
  12.             for (int i = 0; i < 6; i++)
  13.             {
  14.                 Console.WriteLine("数字{0}出现{1}次",i+1,count[i]);
  15.             }
  16.             Console.ReadKey();
复制代码

作者: 郎吉祥    时间: 2013-5-21 14:48
为什么我就想不到呢。
作者: 许大虾    时间: 2013-5-21 15:24
用for写的:
  1. int[] val ={ 0, 0, 0, 0, 0, 0 };
  2.             Random rval = new Random();
  3.             for (int i = 1; i <= 100; i++)
  4.             {
  5.                 if (rval.Next(1, 7) == 1) val[0] += 1;
  6.                 if (rval.Next(1, 7) == 2) val[1] += 1;
  7.                 if (rval.Next(1, 7) == 3) val[2] += 1;
  8.                 if (rval.Next(1, 7) == 4) val[3] += 1;
  9.                 if (rval.Next(1, 7) == 5) val[4] += 1;
  10.                 if (rval.Next(1, 7) == 6) val[5] += 1;
  11.             }
  12.             Console.WriteLine("The number 1 occures {0} times. ", val[0]);
  13.             Console.WriteLine("The number 2 occures {0} times. ", val[1]);
  14.             Console.WriteLine("The number 3 occures {0} times. ", val[2]);
  15.             Console.WriteLine("The number 4 occures {0} times. ", val[3]);
  16.             Console.WriteLine("The number 5 occures {0} times. ", val[4]);
  17.             Console.WriteLine("The number 6 occures {0} times. ", val[5]);
  18.             Console.ReadKey();
  19.         }
  20.     }
复制代码
switch写的  自己看看
  1. //六个变量分别记录各个数出现的次数。
  2.         int Count_1 = 0, Count_2 = 0, Count_3 = 0, Count_4 = 0, Count_5 = 0, Count_6 = 0;
  3.         Random ran = new Random((int)DateTime.Now.Ticks);
  4.         for (int i = 0; i<600;i++)
  5.         {
  6.             
  7.             switch (ran.Next(1, 7))
  8.             {
  9.                 case 1: Count_1++;
  10.                     break;
  11.                 case 2: Count_2++;
  12.                     break;
  13.                 case 3: Count_3++;
  14.                     break;
  15.                 case 4: Count_4++;
  16.                     break;
  17.                 case 5: Count_5++;
  18.                     break;
  19.                 case 6: Count_6++;
  20.                     break;
  21.             }
  22.         }

  23.         StringBuilder sb = new StringBuilder();
  24.         sb.AppendLine("1出现了"+Count_1.ToString()+"次");
  25.         sb.AppendLine("2出现了" + Count_2.ToString() + "次");
  26.         sb.AppendLine("3出现了" + Count_3.ToString() + "次");
  27.         sb.AppendLine("4出现了" + Count_4.ToString() + "次");
  28.         sb.AppendLine("5出现了" + Count_5.ToString() + "次");
  29.         sb.AppendLine("6出现了" + Count_6.ToString() + "次");
  30.         Response.Write(sb.ToString());
复制代码

作者: 张成智    时间: 2013-5-21 15:54
使用switch来完成().
如下:
             // 创建一个 随机数的对象
             Random r = new Random();
            // 这些变量 分别用来 计算 1 到 6 出现的次数
            int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0;
            // 循环 100次
            for (int i = 1; i <= 100; i++)
            {
                // 掷出一个1 到 6 的随机数
                int number = r.Next(1, 7);

                Console.WriteLine("第{0}次掷出{1}", i, number);
                switch (number)
                {
                    case 1:
                        a++;
                        break;
                    case 2:
                        b++;
                        break;
                    case 3:
                        c++;
                        break;
                    case 4:
                        d++;
                        break;
                    case 5:
                        e++;
                        break;
                    case 6:
                        f++;
                        break;
                    default:
                        break;
                }
            }
            Console.WriteLine("1 出现{0}次,2 出现{1}次,3 出现{2}次,4 出现{3}次,5 出现{4}次,6 出现{5}次", a, b, c, d, e, f);

            Console.ReadKey();

作者: chankamlam    时间: 2013-5-21 17:26
                if(number==1)
                 {
                     a++;
                 }
                 else if(number==2)
                 {
                     b++;
                 }
                 else if (number==3)
                 {
                     c++;
                 }
                 else if(number ==4)
                 {
                    d++;
                 }
                 else if(number==5)
                 {
                     e++;
                 }
                 else
                 {
                     f++;
                 }

这段可以用switch(number)
作者: 袁梦希    时间: 2013-5-21 17:47
大家加油   楼主加油   祝大家早日考入黑马{:soso_e100:}
作者: 秦二江    时间: 2013-5-21 18:20
SOAR 发表于 2013-5-21 11:57
试试switch吧。

那还要 6 个 case
作者: 秦二江    时间: 2013-5-21 18:51
曾大鹏 发表于 2013-5-21 14:13
直接开一个数组 表示对应数字出现的次数
多省事啊

又多一种方法,很好
作者: 秦二江    时间: 2013-5-21 18:54
许大虾 发表于 2013-5-21 15:24
用for写的:switch写的  自己看看

好,省略{},就应该和你的差不多了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2