每次我运行代码时,它总是显示为无限循环,为什么

本文关键字:显示 无限循环 为什么 运行 代码 | 更新日期: 2023-09-27 18:37:14

class Program
{
    static void Main(string[] args)
    {
        int okay;
        Console.WriteLine("Enter a number:"); //allows user to enter a number
        okay = Convert.ToInt32(Console.ReadLine());
        Multiplication(okay); //takes the user input and shows the table for that number
    }
    static void Multiplication(int number)
    {
        int value = 10;
        for (int row = 2; row <= value;) 
        {
            for (int column = 2; column <= value; ++column) 
            {
                Console.Write("{0, 4}", number * column); 
            }
            Console.WriteLine();
        }
    }
}

}每次我运行代码时,它总是显示为无限循环,为什么?我不知道还能做什么

每次我运行代码时,它总是显示为无限循环,为什么

for (int row = 2; row <= value;)

你没有递增row,所以它当然永远不会退出循环。

这种类型的错误很容易通过设置断点和使用调试器自行诊断。

问题是您没有在任何地方递增行,因此它是一个无限循环。

for (int row = 2; row <= value;row++) 

将解决问题。如果需要,您还可以增加具有更大数字的行。

缺少

outer loop的更新条件;您必须在更新条件中将row递增1。 因此,您的循环将如下所示:

for (int row = 2; row <= value;row ++) 
        {
            // statemets
        }

还有几点建议:

不要期望用户的所有输入都可以转换为整数,可能会获得字符串作为输入。 如果您使用Convert.ToInt32(Console.ReadLine());进行转换,如果转换失败,肯定会引发异常。所以我建议你使用Int32.TryParse()进行转换。

然后,如果您的要求是打印给定数字的乘法表,则不需要使用双 for 循环。 您可以在单个循环中处理它们。

因此,根据我的建议,完整的场景如下:

 static void Main(string[] args)
    {
        int okay;
        Console.WriteLine("Enter a number:");
        if (Int32.TryParse(Console.ReadLine(), out okay))
        {
            Multiplication(okay);
        }
        else
        {
            Console.WriteLine("Invalid Number");
        }
        Console.ReadKey();
    }
    static void Multiplication(int number)
    {
        int value = 10;
        for (int mult = 2; mult <= value; mult++)
        {
            Console.Write("{0} * {1} = {2} 'n", number, mult, number * mult);
        }
    }

您应该递增row的值。

for (int row = 2; row <= value; row++) 
        {
            for (int column = 2; column <= value; ++column) 
            {
                Console.Write("{0, 4}", number * column); 
            }
            Console.WriteLine();
        }