我将这个琐事游戏与谁想要在控制台上成为百万富翁一起使用。
有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;
}
答案 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,但这对初学者来说更容易阅读并且可以完成工作。 )