C#菜单系统无法使用

时间:2015-11-27 18:33:12

标签: c#

我不知道如何解释这个,但我会尽力,因为我是c#编程的新手。

我创建了一个菜单系统

string sChoice;
            //Menu
            Console.WriteLine("1 - Instructions");
            Console.WriteLine("2 - New User");
            Console.WriteLine("3 - Record & Score");
            Console.WriteLine("4 - Exit System");
            Console.Write("Please enter your choice between 1-4: ");
            sChoice = Console.ReadLine();

按1将转到控制台应用程序的说明部分,依此类推。

//Instructions
            if (sChoice == "1")

            {
                Console.WriteLine();
                Console.WriteLine("*Instructions*");
                Console.WriteLine();

我已经尝试了一个else语句,它将重复菜单并提示用户输入无效密钥,但是这只会在关闭之前再重复3次。有没有办法阻止输入1-4以外的任何其他键或解决我的问题

因为看起来,如果按下1-4以外的任何键,则控制台应用程序将关闭。

1 个答案:

答案 0 :(得分:4)

这个问题让我想起了我年轻的时候并开始编程。

也许你想要这样的东西:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                int mainMenuOption = OptionMenu("Instructions", "New User", "Record & Score", "Exit System");
                switch (mainMenuOption)
                {
                    case 1: Instructions(); break;
                    case 2: NewUser(); break;
                    case 3: RecordAndScore(); break;
                    case 4: Console.WriteLine("Goodbye.."); return;
                }
            }

        }

        static void Instructions()
        {
            // Handle Instructions here
            Console.WriteLine("Instrucctions done");
        }

        static void NewUser()
        {
            // Handle New User here
            Console.WriteLine("New user done");
        }

        static void RecordAndScore()
        {
            // handle recorde and score here
            Console.WriteLine("Record & score done");
        }


        static int OptionMenu(params string[] optionLabels)
        {
            Console.WriteLine("Please Choose an option");
            for (int optionIndex = 0; optionIndex < optionLabels.Length; optionIndex++)
            {
                Console.Write(optionIndex + 1);
                Console.Write(".- ");
                Console.WriteLine(optionLabels[optionIndex]);
            }
            while (true)
            {
                var input = Console.ReadLine();
                int selectedOption;
                if (int.TryParse(input, out selectedOption) && selectedOption > 0 && selectedOption <= optionLabels.Length)
                {
                    return selectedOption;
                }
                else
                {
                    Console.WriteLine("Invalid option, please try again");
                }
            }
        }
    }
}