每次我运行代码时,它总是显示为无限循环,为什么
本文关键字:显示 无限循环 为什么 运行 代码 | 更新日期: 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();
}