C# Console.ReadKey似乎读取了错误的密钥? 我刚刚开始,所以我正从头开始编写我的第一个控制台应用程序。我有这行代码,当我点击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(); }

C# Console.ReadKey似乎读取了错误的密钥? 我刚刚开始,所以我正从头开始编写我的第一个控制台应用程序。我有这行代码,当我点击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(); },c#,if-statement,console,boolean,readkey,C#,If Statement,Console,Boolean,Readkey,看起来程序的执行方式与您编写的完全相同 if (rollType.Key == ConsoleKey.A) { advantage = true; } // First conditional check ends here // This is another conditional block if (rollType.Key == ConsoleKey.D) {

看起来程序的执行方式与您编写的完全相同

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();
            }

如果你点击了A,它将排除A和D的其他部分。毕竟,A等于A,但A不等于D

您需要的可能是switch/case语句

switch(rollType){
case ConsoleKey.A:
  advantage = true;
  break;
case ConsoleKey.D:
  disadvantage = true;
  break;
default:
  Console.WriteLine("Invalid Input");
  break;
}

switch/case语句和do/while循环-这两个是控制台程序流的基础。

只需添加一个,就可以进行这个小更改!(在第二个条件中添加
else


之前发生的事情是,您的控制台将读取一个A键并输入第一个条件。由于第二个和第三个条件与第一个条件是分开的,因此第二个条件也将被检查,如果不为true(在本例中为true),则无论输入什么,它都将进入else语句。希望这有帮助

我想您需要在if(rollType.Key==ConsoleKey.D)前面加一个
else
。或者,您可以使用。
if (rollType.Key == ConsoleKey.A)
{
    advantage = true;
}
else if (rollType.Key == ConsoleKey.D)
{
    disadvantage = true;
}
else
{
    Console.WriteLine("Invalid Input");
    StartApp();
}