簡體   English   中英

C#控制台應用程序中基於用戶輸入的運行功能

[英]running function based on user input in C# console application

我正在嘗試運行一個控制台應用程序,該應用程序將允許用戶選擇他們想要在PC上運行的作業類型,並且他們的響應將轉換為程序運行的功能。 現在的編寫方式是,當用戶輸入除4以外的其他選項時,該程序將鎖定並且不允許任何其他操作,這將成功關閉程序。

        static void Main(string[] args)
        {
            int userInput = 0;

            DisplayMenu();

            do
            {
                if (userInput == 1)
                {
                    QuickClean();
                }
                else if (userInput == 2)
                {
                    DeepClean();
                }
                else if (userInput == 3)
                {
                    SuperClean();
                }
            } while (userInput != 4);              

        }

        static public int DisplayMenu()
        {
            Console.WriteLine("");
            Console.WriteLine();
            Console.WriteLine("1. Quick Clean");
            Console.WriteLine("2. Deep Clean");
            Console.WriteLine("3. Super Clean (admin needed)");
            Console.WriteLine("4. exit");
            var result = Console.ReadLine();
            return Convert.ToInt32(result);
        }

        static void QuickClean()
        {
            Console.WriteLine("quickclean");
            Console.ReadLine();
        }

        static void DeepClean()
        {
            Console.WriteLine("deepclean");
            Console.ReadLine();
        }

        static void SuperClean()
        {
            Console.WriteLine("superclean");
            Console.ReadLine();
        }

DisplayMenu方法返回用戶選擇的內容,但不會將此返回值分配給usermenu局部變量。

如您現在所寫,您只需要輸入一次,然后進入循環,而無需將局部變量usermenu設置為用戶選擇,因此當到達測試退出條件的時間並且循環進入無窮大時,它仍然為零。條件。

您需要在循環內移動對DisplayMenu的調用,並將返回值分配給usermenu ,以便您的用戶可以再次看到菜單並輸入其他選項,然后可以執行所需的操作。

static void Main(string[] args)
{
    int userInput = 0;
    do
    {
        userInput = DisplayMenu();
        if (userInput == 1)
        {
            QuickClean();
        }
        ....
    } while(userInput != 4)
}

我還建議更改DisplayMenu中的代碼,並避免使用Convert.ToInt32來解析用戶輸入。 如果用戶未輸入數字,則Convert.ToInt32將使程序崩潰。 而是使用Int32.TryParse

    static public int DisplayMenu()
    {
        Console.Clear();
        while(true)
        {
            Console.WriteLine("");
            Console.WriteLine();
            Console.WriteLine("1. Quick Clean");
            Console.WriteLine("2. Deep Clean");
            Console.WriteLine("3. Super Clean (admin needed)");
            Console.WriteLine("4. exit");
            int result;
            if(Int32.TryParse(Console.ReadLine(), out result))
                return result;
            else
                Console.WriteLine("Please enter a number");
        }
     }

您不在任何地方存儲返回的值。 userInput DisplayMenu()后, userInput仍為0,這就是為什么在do-while進入infite循環的原因。

do{
    int userInput = DisplayMenu();
    [...]
} while (userInput != 4)

暫無
暫無

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

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