c#中的控制台应用菜单问题

时间:2015-11-04 14:47:54

标签: c#

我对C#很新(嗯,一般编程) 我正在尝试为c#控制台应用程序创建一个菜单。从菜单中选择菜单后,菜单会再次出现......我已经研究并尝试了许多不同的选项,但似乎没有什么对我有用....我知道这对我来说是愚蠢的#39;做错了。  任何建议或指导将非常感谢。谢谢你提前。

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);
}

3 个答案:

答案 0 :(得分:0)

当你的userSelection的值为4时,你的do / 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);

答案 1 :(得分:0)

由于您将代码放在do while循环中,它会不断出现。如果您只想在不使用循环结构的情况下运行此代码,只需将其直接放在Main中。

如果您使用类似

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

循环内的代码将重复进行,直到用户输入4

来自do while的msdn文章:

  

do语句执行语句或语句块   反复进行,直到指定的表达式求值为false。

另一种选择是在break阻止后使用switch语句。

答案 2 :(得分:-1)

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);
    }
}