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();
}
}
}
} 每次运行代码时,它总是显示为无限循环,为什么? 我不知道还能做什么
答案 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();
}