【问题标题】:How would I make a Yes/No prompt in Console using C#?如何使用 C# 在控制台中提示是/否?
【发布时间】:2016-09-18 10:55:29
【问题描述】:

我大多是 C# 新手,我一直在编写代码来练习。

我已经编写了一些代码,您可以在其中输入一行文本或“登录密钥”,并且我想将其设置为您可以确认该登录密钥的位置。

这是我到目前为止所做的代码,我将在我坚持的部分使用“//”。 (不会包含任何不必要的代码。)

    Console.WriteLine("Please enter a login key.");

    string Key = Console.ReadLine();

    Console.WriteLine("You entered, " + Key + " as your login key!");

    Console.WriteLine("Are you sure you want to choose this as your login key? "); // This is where I'm stuck at, got no idea how to do a yes/no prompt.
}

任何帮助将不胜感激。

【问题讨论】:

    标签: c# console-application


    【解决方案1】:

    您可以轻松地使用这些控制台登录脚本。这是我的贡献:

    bool confirmed = false;
    string Key;
    do {
        Console.Write("Please enter a login key: ");
        Key = Console.ReadLine();
        Console.WriteLine("You entered, " + Key + " as your login key!");
    
        ConsoleKey response;
        do
        {
            Console.Write("Are you sure you want to choose this as your login key? [y/n] ");
            response = Console.ReadKey(false).Key;   // true is intercept key (dont show), false is show
            if (response != ConsoleKey.Enter)
                Console.WriteLine();
    
        } while (response != ConsoleKey.Y && response != ConsoleKey.N);
    
        confirmed = response == ConsoleKey.Y;
    } while (!confirmed);
    Console.WriteLine("You chose {0}!", Key);
    Console.ReadLine();
    

    示例输出:

    Please enter a login key: potato
    You entered, potato as your login key!
    Are you sure you want to choose this as your login key? [y/n] a
    Are you sure you want to choose this as your login key? [y/n] s
    Are you sure you want to choose this as your login key? [y/n] l
    Are you sure you want to choose this as your login key? [y/n] d
    Are you sure you want to choose this as your login key? [y/n] k
    Are you sure you want to choose this as your login key? [y/n] f
    Are you sure you want to choose this as your login key? [y/n] d
    Are you sure you want to choose this as your login key? [y/n] n
    Please enter a login key: banana
    You entered, banana as your login key!
    Are you sure you want to choose this as your login key? [y/n] y
    You chose banana!
    

    【讨论】:

      【解决方案2】:

      我把它改造成一个实用程序类,我希望它会有用:

      class UtilsConsole
      {
              public static bool Confirm(string title)
              {
                  ConsoleKey response;
                  do
                  {
                      Console.Write($"{ title } [y/n] ");
                      response = Console.ReadKey(false).Key;  
                      if (response != ConsoleKey.Enter)
                      {
                          Console.WriteLine();
                      }
                  } while (response != ConsoleKey.Y && response != ConsoleKey.N);
      
                  return (response == ConsoleKey.Y);
              }
      }
      

      【讨论】:

        【解决方案3】:

        使用Console.ReadKey()

        Console.WriteLine("Press 'y' if you would like awesome!");
        
        ConsoleKeyInfo cki =    Console.ReadKey();
        
        if (cki.Key.ToString() == "y")
        {
                //do what you need for yes
        }else {
             // presses something other then Y
        }
        

        【讨论】:

          【解决方案4】:

          我更喜欢创建一个可重用的方法来处理所有未来的问题。非常简化的版本来说明基础知识。

          void Main(string[] args)
          {
              if(PromptConfirmation("Did you answer yes?"))
              {
                  //todo: Handle positive response
              }
          }
          
          private bool PromptConfirmation(string confirmText)
          {
              Console.Write(confirmText + " [y/n] : ");
              ConsoleKey response = Console.ReadKey(false).Key;
              Console.WriteLine();
              return (response == ConsoleKey.Y);
          }
          

          【讨论】:

            【解决方案5】:

            你可以使用while循环

            bool confirmed = false;
            
            while(!confirmed)
            {
                Console.WriteLine("Please enter a login key.");
                string Key = Console.ReadLine();
                Console.WriteLine("You entered, " + Key + " as your login key!");
                Console.WriteLine("Are you sure you want to choose this as your login key? [yes/no]");
            
                string option = Console.ReadLine();
            
                if (option == "yes")
                {
                    confirmed = true;
                }
            
            }
            

            这样,如果option 不是yes,它将保留在while 循环中。

            【讨论】:

              猜你喜欢
              • 2014-01-11
              • 1970-01-01
              • 2022-08-19
              • 2016-11-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-04-03
              相关资源
              最近更新 更多