当从语句中按下不同的键时,停止程序运行

时间:2013-12-27 17:01:52

标签: c#

我将这个琐事游戏与谁想要在控制台上成为百万富翁一起使用。

有8个选项,A,B,C,D代表答案和1,2,3,4。代表帮助选项。

我用这个(例子)确定按下的键:

string key_pressed = Console.ReadLine().ToUpper();
if (key_pressed.Equals("A"))
{
 //code here
}
else if (key_pressed.Equals("B"))
{
 //code here
}

我的问题是当用户按下那些不同的密钥时8.程序会自动进入另一个级别(更改问题)。我该如何解决这个问题?

EDIT1。

我在if,else if语句的末尾有这个块。

     else
{
Console.WriteLine("You need to input a valid key");
continue;
}

4 个答案:

答案 0 :(得分:0)

在最后添加else { }块并针对该情况执行任何适当的操作(例如,打印出提醒用户输入有效选项的消息)。

答案 1 :(得分:0)

尝试使用开关,然后返回默认值。否则你可以添加一个else并返回那里以打破这个功能。

switch (key_pressed)
{
    case "A":
        // code here
        break;
    case "B":
        //code here
        break;
    default:
        return;
        break;
}

答案 2 :(得分:0)

使用这种结构,这是实现此类行为的最便捷方式:

//Listen for key pressed
ConsoleKeyInfo keyPressed = Console.ReadKey(true);
switch (keyPressed.Key)
{
case ConsoleKey.A:
    {
        //A variant
        break;
    }
case ConsoleKey.B:
    {
        //B variant
        break;
    }
case ConsoleKey.C:
    {
        //C variant
        break;
    }
case ConsoleKey.D:
    {
        //D variant
        break;
    }
default:
    {
        //If a different key pressed
        break;
    }
}

答案 3 :(得分:0)

查询循环中的键,并且在获得正在查找的其中一个键之前不要退出循环。

我不用c#编码,但是一个解决方案可能类似于:

string key_pressed="";
while(key_pressed=="")
{
  string key_pressed = Console.ReadLine().ToUpper();
  if (key_pressed.Equals("A"))
  {
     //code here
  }
  else if (key_pressed.Equals("B"))
  {
    //code here
  }
  // else-if cases for C and D
  else
  {
    // code for the "wrong key" case. Beep, perhaps.
    key_pressed=""; // so the loop continues
  }
} // end of while loop

(如果我用C或C ++编写代码,我可能会使用break / iterate指令,可能是do / while而不是while / do,但这对初学者来说更容易阅读并且可以完成工作。 )