簡體   English   中英

Console.ReadLine()沒有退出C#中的程序

[英]Console.ReadLine() not exiting Program in c#

我有一個作業,我必須在其中創建代碼以顯示因數以及數字是否為完美數和/或質數。 我想我擁有運行程序的所有代碼,但是當我到達最后一行(Console.ReadLine())時,我希望按下Enter鍵然后退出程序。 當前,當我按下Enter鍵時,程序會一遍又一遍地顯示它是質數還是完美數(每次按Enter鍵)。 因此,基本上,它會在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!
        //}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM