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

时间:2016-03-04 01:30:18

标签: c#

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();

        }
    }
}

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

4 个答案:

答案 0 :(得分:4)

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

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

通过设置断点和使用调试器,这种类型的错误对于您自己进行诊断是微不足道的。

答案 1 :(得分:2)

问题是你没有在任何地方增加行,所以它是一个无限循环。

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

将解决问题。如果需要,您还可以使用更大的数字递增行。

答案 2 :(得分:2)

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

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

更多建议:

不要期望用户的所有输入都可以转换为整数,有可能将字符串作为输入。如果您使用Convert.ToInt32(Console.ReadLine());进行转换,那么如果转换失败,则会抛出异常。因此,我建议您使用Int32.TryParse()进行转换。

然后如果您要求打印给定数字的乘法表,则不需要使用double 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);
        }
    }

答案 3 :(得分:0)

您应该增加row

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

        }