Console.ReadLine() 不退出 C# 中的程序
Console.ReadLine() not exiting Program in c#
我有一个作业,我必须创建代码来显示因数以及一个数是否是完美的 and/or 素数。我认为我拥有 运行 我的程序的所有代码,但是当我到达最后一行 (Console.ReadLine()) 时,我希望按回车键然后退出程序。目前,当我按下回车键时,程序会一遍又一遍地显示它是否是一个素数 and/or 完美数(每次你按下回车键)。所以基本上,它一遍又一遍地执行 while 循环之后的所有内容。
请记住,我是 C# 的新手,所以我的一些语法和可读性可能很奇怪。我只对能帮助我解决 ReadLine 问题的答案感兴趣。我的导师将帮助我使我的代码更具可读性和组织性。
感谢您的建议!这是我的代码。我评论了 ReadLine 没有关闭程序的地方:
using System;
namespace Factorizer.UI
{
class Program
{
static void Main(string[] args)
{
string input;
int num, i, x = 0, sum = 0;
while (true)
{
Console.Write("Enter a number: ");
input = Console.ReadLine();
if (int.TryParse(input, out num))
{
Console.Write("\nThe factors are: ");
for (i = 1; i <= num; i++)
{
if (num % i == 0)
{
Console.Write("{0} ", i);
}
}
break;
}
else
{
Console.WriteLine("\nThat was not a valid number!\n");
}
}
for (i = 1; i < num; i++)
{
if (num % i == 0)
{
sum = sum + i;
}
if (sum == num)
{
Console.Write("\n\n{0} is a perfect number.\n", num);
}
else
{
Console.Write("\n\n{0} is not a perfect number.\n", num);
}
for (i = 2; i <= num / 2; i++)
{
if (num % i == 0)
{
x++;
break;
}
}
if (x == 0 && num != 1)
{
Console.Write("\n{0} is a prime number.", num);
}
else
{
Console.Write("\n{0} is not a prime number.", num);
}
Console.ReadLine(); //this isn't closing the program!
}
}
}
}
Console.ReadLine()
在 for 循环中。将其下移到下一个括号后。
只需输入Console.ReadLine();在 for 之后,它位于 for 块内,这就是为什么它不断打印并删除 while 块之后的 for 的原因,如下所示:
string input;
int num, i, x = 0, sum = 0;
while (true)
{
Console.Write("Enter a number: ");
input = Console.ReadLine();
if (int.TryParse(input, out num))
{
Console.Write("\nThe factors are: ");
for (i = 1; i <= num; i++)
{
if (num % i == 0)
{
Console.Write("{0} ", i);
}
}
break;
}
else
{
Console.WriteLine("\nThat was not a valid number!\n");
}
}
/*for (i = 1; i < num; i++)
{*/
if (num % i == 0)
{
sum = sum + i;
}
if (sum == num)
{
Console.Write("\n\n{0} is a perfect number.\n", num);
}
else
{
Console.Write("\n\n{0} is not a perfect number.\n", num);
}
for (i = 2; i <= num / 2; i++)
{
if (num % i == 0)
{
x++;
break;
}
}
if (x == 0 && num != 1)
{
Console.Write("\n{0} is a prime number.", num);
}
else
{
Console.Write("\n{0} is not a prime number.", num);
}
Console.ReadLine(); //this isn't closing the program!
//}
我有一个作业,我必须创建代码来显示因数以及一个数是否是完美的 and/or 素数。我认为我拥有 运行 我的程序的所有代码,但是当我到达最后一行 (Console.ReadLine()) 时,我希望按回车键然后退出程序。目前,当我按下回车键时,程序会一遍又一遍地显示它是否是一个素数 and/or 完美数(每次你按下回车键)。所以基本上,它一遍又一遍地执行 while 循环之后的所有内容。
请记住,我是 C# 的新手,所以我的一些语法和可读性可能很奇怪。我只对能帮助我解决 ReadLine 问题的答案感兴趣。我的导师将帮助我使我的代码更具可读性和组织性。
感谢您的建议!这是我的代码。我评论了 ReadLine 没有关闭程序的地方:
using System;
namespace Factorizer.UI
{
class Program
{
static void Main(string[] args)
{
string input;
int num, i, x = 0, sum = 0;
while (true)
{
Console.Write("Enter a number: ");
input = Console.ReadLine();
if (int.TryParse(input, out num))
{
Console.Write("\nThe factors are: ");
for (i = 1; i <= num; i++)
{
if (num % i == 0)
{
Console.Write("{0} ", i);
}
}
break;
}
else
{
Console.WriteLine("\nThat was not a valid number!\n");
}
}
for (i = 1; i < num; i++)
{
if (num % i == 0)
{
sum = sum + i;
}
if (sum == num)
{
Console.Write("\n\n{0} is a perfect number.\n", num);
}
else
{
Console.Write("\n\n{0} is not a perfect number.\n", num);
}
for (i = 2; i <= num / 2; i++)
{
if (num % i == 0)
{
x++;
break;
}
}
if (x == 0 && num != 1)
{
Console.Write("\n{0} is a prime number.", num);
}
else
{
Console.Write("\n{0} is not a prime number.", num);
}
Console.ReadLine(); //this isn't closing the program!
}
}
}
}
Console.ReadLine()
在 for 循环中。将其下移到下一个括号后。
只需输入Console.ReadLine();在 for 之后,它位于 for 块内,这就是为什么它不断打印并删除 while 块之后的 for 的原因,如下所示:
string input;
int num, i, x = 0, sum = 0;
while (true)
{
Console.Write("Enter a number: ");
input = Console.ReadLine();
if (int.TryParse(input, out num))
{
Console.Write("\nThe factors are: ");
for (i = 1; i <= num; i++)
{
if (num % i == 0)
{
Console.Write("{0} ", i);
}
}
break;
}
else
{
Console.WriteLine("\nThat was not a valid number!\n");
}
}
/*for (i = 1; i < num; i++)
{*/
if (num % i == 0)
{
sum = sum + i;
}
if (sum == num)
{
Console.Write("\n\n{0} is a perfect number.\n", num);
}
else
{
Console.Write("\n\n{0} is not a perfect number.\n", num);
}
for (i = 2; i <= num / 2; i++)
{
if (num % i == 0)
{
x++;
break;
}
}
if (x == 0 && num != 1)
{
Console.Write("\n{0} is a prime number.", num);
}
else
{
Console.Write("\n{0} is not a prime number.", num);
}
Console.ReadLine(); //this isn't closing the program!
//}