【问题标题】:Console.ReadKey seems to be reading the wrong key?Console.ReadKey 似乎正在读取错误的密钥?
【发布时间】:2020-06-27 02:00:24
【问题描述】:

我刚刚开始,所以我正在从头开始编写我的第一个控制台应用程序。我有这行代码,当我点击 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();
}

【问题讨论】:

  • 我想你想要一个else 就在if (rollType.Key == ConsoleKey.D) 之前。或者,您可以使用switch statement

标签: c# if-statement console boolean readkey


【解决方案1】:

只需添加做这个小改动! (在第二个条件中添加else

if (rollType.Key == ConsoleKey.A)
{
    advantage = true;
}
else if (rollType.Key == ConsoleKey.D)
{
    disadvantage = true;
}
else
{
    Console.WriteLine("Invalid Input");
    StartApp();
}

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

【讨论】:

    【解决方案2】:

    如果你击中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 循环 - 这两个是控制台程序流程的基础。

    【讨论】:

      【解决方案3】:

      似乎程序正在按照您编写的方式执行。

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

      【讨论】:

        猜你喜欢
        • 2014-01-08
        • 2013-12-25
        • 1970-01-01
        • 2019-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-03
        • 2017-10-01
        相关资源
        最近更新 更多