C# Console.ReadLine()未退出c中的程序#

C# Console.ReadLine()未退出c中的程序#,c#,.net,visual-studio,console-application,console.readline,C#,.net,Visual Studio,Console Application,Console.readline,我有一个任务,我必须创建代码来显示因子,以及一个数字是否是完美数和/或素数。我想我已经掌握了运行程序的所有代码,但是当我到达最后一行(Console.ReadLine())时,我希望按enter键,然后退出程序。目前,当我按enter键时,程序会一遍又一遍地显示它是素数还是完美数(每次按enter键时)。所以基本上,它在while循环之后一遍又一遍地执行所有操作 请记住,我对C#非常陌生,所以我的一些语法和可读性可能会很奇怪。我只对能帮助我解决阅读问题的答案感兴趣。我的导师将帮助我提高代码的可读

我有一个任务,我必须创建代码来显示因子,以及一个数字是否是完美数和/或素数。我想我已经掌握了运行程序的所有代码,但是当我到达最后一行(Console.ReadLine())时,我希望按enter键,然后退出程序。目前,当我按enter键时,程序会一遍又一遍地显示它是素数还是完美数(每次按enter键时)。所以基本上,它在while循环之后一遍又一遍地执行所有操作

请记住,我对C#非常陌生,所以我的一些语法和可读性可能会很奇怪。我只对能帮助我解决阅读问题的答案感兴趣。我的导师将帮助我提高代码的可读性和组织性

谢谢你的建议!这是我的密码。我评论了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!
            }
        }
    }
}
使用系统;
命名空间分解器.UI
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串输入;
int num,i,x=0,sum=0;
while(true)
{
控制台。写入(“输入一个数字:”);
input=Console.ReadLine();
if(int.TryParse(输入,输出数值))
{
Console.Write(“\n因子为:”);
for(i=1;i
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!
        //}
字符串输入;
int num,i,x=0,sum=0;
while(true)
{
控制台。写入(“输入一个数字:”);
input=Console.ReadLine();
if(int.TryParse(输入,输出数值))
{
Console.Write(“\n因子为:”);

对于(i=1;我不希望程序自动退出。我正在使用Console.ReadLine()保持程序打开,直到用户点击enter。我不确定,但认为
Console.ReadKey()
将设法在按下任何键的情况下终止程序。请参阅:如果我向下移动它,程序将一次又一次地运行,而无需点击按钮。它只是自动无限循环。@这就是我的计划,但它不会在按下任何键的情况下退出,而是在向上循环。确定!解决了问题。移动了控制台。ReadLine();在下一个braket之后关闭,并添加了一个中断;for循环的内部在哪里。就像在正在进行的结束大括号之后?如果我这样做,程序会一次又一次地运行,而不必点击按钮。明白了,那么你不需要它,对于你放在while块之后的程序,试试这个:好的!解决了。移动了控制台。ReadLine();在下一个braket之后下降,并添加了一个中断;在for循环的内部。我刚刚编辑了我的答案…这也有效,但再次确认,您不需要它:)哦!很有意思。让我检查一下。欢迎使用堆栈溢出!看起来您需要学习使用调试器。请自行解决一些问题。如果以后仍有问题,请随时回来提供更多详细信息。