2

値のメニューが使用可能な例を次に示します。オプションが選択されていない場合は、最初にループバックしたいと思います。

static void Main(string[] args)
{
    Console.WriteLine("1 : Option 1");
    Console.WriteLine("2 : Option 2");
    Console.WriteLine("3 : Option 3");
    Console.WriteLine("4 : Option 4");
    Console.WriteLine("5 : Option 5");
    Console.Write("Please enter your option choice: ");
    string choice = Console.ReadLine();

    int intChoice = int.Parse(choice);
    switch (intChoice)
    {
        case 1:
            Console.WriteLine("you chose 1");
            break;
        case 2:
            Console.WriteLine("you chose 2");
            break;
        case 3:
            Console.WriteLine("you chose 3");
            break;
        case 4:
            Console.WriteLine("you chose 4");
            break;
        case 5:
            Console.WriteLine("you chose 5");
            break;
    }
}

クラスとメソッドを使用してそれを実行しようとしましたが、本当に混乱しました。

助けてくれてありがとう。

4

6 に答える 6

2

全体をdo-whileブロックでラップします。

bool isValid = true;

do
{
    isValid = true;
    // Write to console
    // read from console
    switch(intChoice)    
    {
        // Place some cases here.
        default: 
            Console.WriteLine("Invalid Choice")
            isValid = false;
    }
}
while(!isValid);
于 2012-10-23T21:44:06.030 に答える
0
public void GetInput()
{
    int inputValue = 0;
    bool isValidInput = false;
    List<int> validEntries = new List<int> { 1,2,3, 42, 55, 69};

    while (!isValidInput)
        isValidInput = int.TryParse(Console.ReadLine(), out inputValue) && validEntries.Contains(inputValue);

    switch (inputValue)
    {
        case 1:
            {
                // something
                break;
            }
        case 2:
            {
                // something else
                break;
            }
        default:
            {
                //yet something else
                break;
            }
    }
}

編集:整数を受け入れる代わりに、明示的な値チェックを追加しました。

于 2012-10-23T21:49:58.567 に答える
0

whileループに実行を継続するかどうかを指示するフリップスイッチとしてブール値を使用します。これが小さな例です:

bool stillRunning = true;

while (stillRunning)
{
    Console.WriteLine("Enter a number.");
    string input = Console.ReadLine();
    int key = Convert.ToInt32(input);

    switch (key)
    {
        case 1:
            // Do something.
            stillRunning = false;
            break;

        case 2:
            // Do something.
            stillRunning = false;
            break;

        default:
            Console.WriteLine("No key selected.");
            break;
    }
} 
于 2012-10-23T21:36:51.973 に答える
0

デフォルトを使用できます

    switch (intChoice)
    {
        case 1:
            Console.WriteLine("you chose 1");
            break;
        case 2:
            Console.WriteLine("you chose 2");
            break;
        ....... 
        default: 
            //your logic here
            break;
    }

その後、どのようにそれを行うかはあなたの選択です。次のように、while とブール値を使用できます。

static void Main(string[] args)
        {

            Console.WriteLine("1 : Option 1");
            Console.WriteLine("2 : Option 2");
            Console.WriteLine("3 : Option 3");
            Console.WriteLine("4 : Option 4");
            Console.WriteLine("5 : Option 5");
            Console.Write("Please enter your option choice: ");


            bool correct = true;

            while (correct)
            {
                string choice = Console.ReadLine();
                int intChoice = int.Parse(choice);
                switch (intChoice)
                {
                    case 1:
                        Console.WriteLine("you chose 1");
                        break;
                    case 2:
                        Console.WriteLine("you chose 2");
                        break;
                    case 3:
                        Console.WriteLine("you chose 3");
                        break;
                    case 4:
                        Console.WriteLine("you chose 4");
                        break;
                    case 5:
                        Console.WriteLine("you chose 5");
                        break;
                    default:
                        correct = false;
                        break;
                }
            }
        }
于 2012-10-23T21:41:50.597 に答える
0

最も明白な解決策は次のようです。

bool loop = true;

while (loop)
{
    loop = false;
    switch (Console.ReadLine())
    {
        case "1":
            Console.WriteLine("you chose 1");
            break;
        case "2":
            Console.WriteLine("you chose 2");
            break;
        case "3":
            Console.WriteLine("you chose 3");
            break;
        case "4":
            Console.WriteLine("you chose 4");
            break;
        case "5":
            Console.WriteLine("you chose 5");
            break;
        default:
            loop = true;
            break;
    }
}

ただし、これを行うより良い方法があるかもしれません。

于 2012-10-23T21:42:15.123 に答える
0

したがって、必要な数値は 1 つだけです。GetKeyメソッドを使用して、コンソールから値を読み取ってから、次のstringように解析することをお勧めしintます。

DisplayOptions();
bool choiceDone;

do
{
    choiceDone = true;

    switch(GetChoice())
    {
       case ConsoleKey.D1:
           Console.WriteLine("you chose 1");
           break;
       case ConsoleKey.D2:
           Console.WriteLine("you chose 2");
           break;
           // etc
       default:
           choiceDone = false;
           break;
    }

} while(!choiceDone);    

また、コードをよりクリーンにするために、いくつかのメソッドを抽出しました。

private ConsoleKey GetChoice()
{
     Console.Write("Please enter your option choice: ");
     return Console.ReadKey().Key;
}

private void DisplayOptions()
{
     Console.Clear();
     Console.WriteLine("1 : Option 1");
     Console.WriteLine("2 : Option 2");
     Console.WriteLine("3 : Option 3");
     Console.WriteLine("4 : Option 4");
     Console.WriteLine("5 : Option 5");
}
于 2012-10-23T21:46:05.750 に答える