【问题标题】:Random Number adding issue随机数添加问题
【发布时间】:2014-03-07 08:23:48
【问题描述】:

您好,我创建了这段代码,但现在我卡住了。 如何将 N1 和 N2 之间的所有数字相加,除了可被 5 整除的数字? 并显示结果?

问题:我的if 声明如果 y 可以被 5 整除,则不要相加,只添加不能被 5 整除的数字。我不知道该怎么做。

新代码怎么样?

                        Console.Write("Enter N1 : ");
                        int N1 = int.Parse(Console.ReadLine());
                        Console.Write("Enter N2: ");
                        int N2 = int.Parse(Console.ReadLine());
                        int counter = 1;
                        while ()
                        {
                            Console.Write("");
                            counter++;
                        }

【问题讨论】:

  • 什么异常?在哪条线上?我们不喜欢猜测......
  • @MarcinJuraszek 我的 if 语句如果 y 可被 5 整除,则不要仅添加不能被 5 整除的数字
  • 哦,所以这只是 我的 except 条件不起作用,而不是代码抛出异常.. . 你应该更精确。
  • 我不确定我是否理解您在这里要做什么?您是否尝试输出(包括或不包括 N1 和 N2?)N1 和 N2 之间的所有数字,但可被 5 整除的数字除外,或者您是否希望在这些值之间随机输出并在可被 5 整除时做一些特殊的事情?
  • @MarcinJuraszek 例如:我把 N1:1 N2:10 添加到 1-10 之间,除了 5。

标签: c# if-statement for-loop random


【解决方案1】:

循环只运行五圈。但是,它如何将 n1 和 n2 范围内的所有数字相加?

使用这个逻辑:

int  sum=0;
for(int i=N1;i<=N2;i++)
{
    if ( !(i%5 == 0))
        sum=sum+i;

}
console.writeline(sum);

【讨论】:

    【解决方案2】:

    注意:使用 tryParse 来避免无效的输入异常,其余的都是 as

    这里如果用户输入输入,因为 n1 小而 n2 大,反之亦然,两者都被处理:

            Random rnd = new Random();
            Console.WriteLine("N1: ");
            int N1 = 0;
            int total = 0;
            int.TryParse(Console.ReadLine(), out N1);
            Console.WriteLine("N2: ");
            int N2 = 0;
            int.TryParse(Console.ReadLine(), out N2);
            int x1 = 0, x2 = 0;
            if (N1 < N2)
            {
                x1 = N1;
                x2 = N2;
            }
            else
            {
                x1 = N2;
                x2 = N1;
            }
                for (int X = x1; X <= x2; X++)
                {
                    int y = rnd.Next(N1, N2);
                    if (y % 5 == 0)
                    {
                        Console.WriteLine("");
                    }
                    else
                    {
                        total = total + y;
                        Console.WriteLine("");
                    }
                }
            Console.ReadLine();
    

    【讨论】:

      【解决方案3】:

      如何将 N1 和 N2 之间的所有数字相加,除了可被 5 整除的数字?

      如果想法是添加 N1 和 N2 之间的每个数字,为​​什么要使用 Random?!你的问题真的很混乱。

      Console.WriteLine("N1: ");
      int N1 = Convert.ToInt32(Console.ReadLine());
      Console.WriteLine("N2: ");
      int N2 = Convert.ToInt32(Console.ReadLine());
      
      int sum = 0;
      for (int X = N1; X <= N2; X++)
      {
          if (X % 5 != 0)
          {
              sum += X;
          }
      }
      Console.WriteLine("Sum: {0}", sum.ToString());
      Console.ReadLine();
      

      【讨论】:

      • 你应该检查这个条件吗?如果 (N1 > N2)
      • @IJ 循环条件将为我检查它。如果这是真的,sum 将是默认的0,因为循环体根本不会被执行。
      • 所以除了能被 5 整除的数字之外,30 到 20 之间的数字相加会得到 '0' 吗?
      【解决方案4】:

      使用rnd.Next(N1, N2);

      返回指定范围内的随机整数。

      试试这个,你不需要else 条件。只需检查它是否不能被 5 整除,然后将其添加到 totalSum:

      int totalSum = 0;
      for (int x = N1; x <= N2; x++)
      {
          int y = rnd.Next(N1, N2);
          if (y % 5 != 0)
          {
              totalSum += y;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-18
        • 1970-01-01
        • 2011-08-02
        • 2010-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多