我刚刚开始,所以我正在从头开始编写我的第一个控制台应用程序。我有这行代码,当我点击d时,它将正确地带我进入下一步,并设置为true的不利条件,但是如果我按了a,它就会出于某种原因执行else语句。知道原因是什么吗?
Console.WriteLine("Press the A key for advantage, or the D key for disadvantage");
var rollType = Console.ReadKey();
Console.WriteLine(System.Environment.NewLine);
if (rollType.Key == ConsoleKey.A)
{
advantage = true;
}
if (rollType.Key == ConsoleKey.D)
{
disadvantage = true;
}
else
{
Console.WriteLine("Invalid Input");
StartApp();
}发布于 2020-03-15 23:06:11
只要加上,做这个小小的改变!(在第二个条件中添加else )
if (rollType.Key == ConsoleKey.A)
{
advantage = true;
}
else if (rollType.Key == ConsoleKey.D)
{
disadvantage = true;
}
else
{
Console.WriteLine("Invalid Input");
StartApp();
}在此之前,您的控制台将读取一个A键并输入第一个条件。因为第二个条件和第三个条件与第一个条件是分开的,所以第二个条件也会被检查,如果不是真的话(在这种情况下,这个条件不是真),不管输入什么,它都会被选中。希望这能有所帮助。
发布于 2020-03-15 21:32:45
看起来这个程序就像你写的那样被执行了。
if (rollType.Key == ConsoleKey.A)
{
advantage = true;
} // First conditional check ends here
// This is another conditional block
if (rollType.Key == ConsoleKey.D)
{
disadvantage = true;
}
else // You pressed A, so this block is executed
{
Console.WriteLine("Invalid Input");
StartApp();
}发布于 2020-03-15 21:32:52
如果你击中A,它就会把A和的其他部分去掉。毕竟,A等于A,但A不等于D。
您想要的可能是一个开关/case语句。
switch(rollType){
case ConsoleKey.A:
advantage = true;
break;
case ConsoleKey.D:
disadvantage = true;
break;
default:
Console.WriteLine("Invalid Input");
break;
}开关/case语句和do/while循环-这两个是控制台程序流的基础。
https://stackoverflow.com/questions/60697807
复制相似问题