簡體   English   中英

c#中的控制台應用程序菜單問題

[英]Console application Menu issues in c#

我對 C# 很陌生(嗯,一般編程)我正在嘗試為 ac# 控制台應用程序創建一個菜單。 從菜單中進行選擇后,菜單不斷重新出現...我研究並嘗試了許多不同的選項,但似乎沒有任何效果對我有用....我知道我做錯了一些愚蠢的事情。 任何建議或指導將不勝感激。 提前致謝。

static void Main()  //Start of program
{   
    //Menu and other UI stuff

    int userSelection = 0;

    do
    {
        Console.WriteLine("[1]  Encryption");
        Console.WriteLine("[2]  Decryption");
        Console.WriteLine("[3]  Exit");

        Console.Write ("Please choose an option 1-3:  ");
        userSelection = Int32.Parse(Console.ReadLine()); 

        switch(userSelection)
        {   
            case 1:
                readFile();
                break;

            case 2:
                decryption();
                break;

            case 3:
                Environment.Exit(0);
                break;
            default:
                Console.WriteLine("Your selection is invalid. Please     try again.");
                break;
        }
    }
    while (userSelection != 4);
}

你的 do/while 只會在你的 userSelection 值為 4 時停止,在這個例子中,它永遠不會發生。

將您的 while 條件更改為

while(userSelection <= 0 || userSelection > 3)

應該可以解決...

也許你想使用類似的東西:

int userSelection = 0;
bool validAnswer = false;
do
{
    Console.WriteLine("[1]  Encryption");
    Console.WriteLine("[2]  Decryption");
    Console.WriteLine("[3]  Exit");

    Console.Write ("Please choose an option 1-3:  ");
    userSelection = Int32.Parse(Console.ReadLine()); 

    switch(userSelection)
    {   
        case 1:
            readFile();
            validAnswer = true;
            break;

        case 2:
            decryption();
            validAnswer = true;
            break;

        case 3:
            validAnswer = true;
            Environment.Exit(0);
            break;
        default:
            Console.Clear();
            Console.WriteLine("Your selection is invalid. Please     try again.");
            break;
    }

}while (!validAnswer);

它不斷重新出現,因為您將代碼置於do while循環中。 如果您只想運行此代碼一次,不要使用循環結構,只需將其直接放在Main

如果你使用類似的東西

do
{
    // ...
}
while (userSelection != 4);

循環內的代碼將重復,直到用戶輸入4

來自 msdn 文章do while

do 語句重復執行一個語句或一個語句塊,直到指定表達式的計算結果為 false。

另一種選擇是在switch塊之后使用break語句。

class Program
{
    static void Main()  //Start of program
    {
        //Menu and other UI stuff

        string userSelection;

        do
        {
            Console.Clear();
            Console.WriteLine("[1]  Encryption");
            Console.WriteLine("[2]  Decryption");
            Console.WriteLine("[3]  Exit");

            Console.Write("Please choose an option 1-3:  ");
            userSelection = Console.ReadLine();

            switch (userSelection)
            {
                case "1":
                    Console.WriteLine("mission 1");
                    break;

                case "2":
                    Console.WriteLine("mission 2");
                    break;

                case "3":
                    Environment.Exit(0);
                    break;
                default:
                    Console.WriteLine("Your selection is invalid. Please     try again.");
                    break;
            }
            Console.ReadLine();
        }
        while (true);
    }
}

暫無
暫無

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

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