首页 > 解决方案 > 循环语法中的 C# 错误

问题描述

这是我想做的事情:

  1. 用户输入一个起始值
  2. 输入最后一个值
  3. 程序询问用户是要向上计数到最后一个值还是向下计数
  4. 用户响应和程序(增加值类型(I),增加值类型(I))

示例:通过 (fac=-1) 从 (Num1=10) 到 (Num2=1) 倒计时

预期结果:

Welcome To The Counter System
==============================
Enter the first number: 10
==============================
Enter the last number: 1
==============================
**To Increase The Value Type (I)**
**To Decrease The Value Type (D)**
D
==============================
Enter The Factor: 1
==============================
RESULT
10
9
8
7
6
5
4
3
2
1

我的代码:

static void Main(string[] args)
{
            Console.WriteLine("Welcome To The Counter System");
            Console.WriteLine("==============================");

            Console.Write("Enter the first number: ");
            decimal Num1 = Convert.ToDecimal(Console.ReadLine());

            Console.WriteLine("==============================");

            Console.Write("Enter the last number: ");
            decimal Num2 = Convert.ToDecimal(Console.ReadLine());

            Console.WriteLine("==============================");

            Console.WriteLine("**To Increase The Value Type (I)**");
            Console.WriteLine("**To Decrease The Value Type (D)**");

            char Op = Convert.ToChar(Console.ReadLine());

            if (Op == 'I' || Op == 'i')
            {
                Console.Write("Enter Increment Factor : ");
                decimal fac = Convert.ToDecimal(Console.ReadLine());

                for (decimal beg = Num1; Num2 >= Num1; beg = Num1 + fac)
                {
                    Console.WriteLine(beg);
                    break;
                }
            }

            if (Op == 'D' || Op == 'd')
            {
                Console.Write("Enter Ddecrement Factor : ");
                decimal fac = Convert.ToDecimal(Console.ReadLine());
                Console.WriteLine("==============================");
                Console.WriteLine("RESULT");

                for (decimal beg = Num1; Num2 <= Num1; beg = (Num1 - fac))
                {
                    Console.WriteLine(beg);
                    break;
                }
            }
        }
    }
}

标签: c#

解决方案


这个问题很模糊,因为您并没有首先解释您的期望。但是,如果您希望使用 fac 变量作为 for 循环的结果来增加 Num1 的值,我确实看到 for 循环有问题:

  1. 您不会使用 fac 变量增加 Num1 。您需要在 for 循环中添加一条语句来增加 Num1 的值。

  2. 带有“beg = Num1 + fac”的部分防止 beg 变量递增。例如,如果 Num1 的值为 0.0m(十进制值),而 fac 的值为 1.1m,则 beg 的值将始终保持为 1.1m。这违背了 for 循环依赖于防止无限循环的增量器的目的。

这是更新的代码。为了简单起见,我确实删除了输入功能:

decimal Num1 = 0.0m;
decimal Num2 = 2.2m;

char Op = 'I';

if (Op == 'I' || Op == 'i')
{
    decimal fac = 1.1m;

    for (decimal beg = Num1; beg <= Num2; beg += fac)
    {
        Console.WriteLine("Value of beg is: " + beg);

        Num1 = beg;

        Console.WriteLine("Value of Num1 has been updated to: " + Num1);
    }
}

推荐阅读