Console.ReadKey 好像读错了key?
Console.ReadKey seems to be reading the wrong key?
我刚刚起步,所以我正在从头开始编写我的第一个控制台应用程序。我有这行代码,当我点击 d 它正确地将我带到下一步并将 advantage 设置为 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();
}
看起来程序正在按照您编写的方式执行。
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 和 else部分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
)
if (rollType.Key == ConsoleKey.A)
{
advantage = true;
}
else if (rollType.Key == ConsoleKey.D)
{
disadvantage = true;
}
else
{
Console.WriteLine("Invalid Input");
StartApp();
}
之前发生的事情是您的控制台会读取 A 键并输入第一个条件。由于第二个和第三个条件与第一个是分开的,因此第二个也将被检查,如果不为真(在这种情况下它不会为真),则无论输入什么都将进入 else 语句。希望这可以帮助。
我刚刚起步,所以我正在从头开始编写我的第一个控制台应用程序。我有这行代码,当我点击 d 它正确地将我带到下一步并将 advantage 设置为 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();
}
看起来程序正在按照您编写的方式执行。
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 和 else部分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
)
if (rollType.Key == ConsoleKey.A)
{
advantage = true;
}
else if (rollType.Key == ConsoleKey.D)
{
disadvantage = true;
}
else
{
Console.WriteLine("Invalid Input");
StartApp();
}
之前发生的事情是您的控制台会读取 A 键并输入第一个条件。由于第二个和第三个条件与第一个是分开的,因此第二个也将被检查,如果不为真(在这种情况下它不会为真),则无论输入什么都将进入 else 语句。希望这可以帮助。