【问题标题】:Password console application with the use of a while loop使用 while 循环的密码控制台应用程序
【发布时间】:2017-03-14 14:18:16
【问题描述】:

所以基本上我正在尝试编写一个控制台应用程序,它要求用户输入密码,并且将继续要求它仅三遍,然后停止使用“while”循环,但它继续循环即使使用了正确的密码并且在我输入了超过 3 次之后,也会要求我输入密码。

const string pass = "Password";            
string attempt;

do
{
    Console.Write("Please enter password: ");
    attempt = Console.ReadLine();

    if (attempt == pass)
    {
        Console.WriteLine("Access granted.");
    }
    else
    {
        Console.WriteLine("Access denied.");
    }
} while (true);

【问题讨论】:

    标签: c# while-loop passwords console-application limit


    【解决方案1】:

    所以你想问用户密码三次,直到输入正确的密码,然后停止询问用户是否输入正确。你可以通过for循环来做到这一点

    const string pass = "Password";            
    string attempt;
    
    for(int i=0;i<3;i++)
    {
        Console.Write("Please enter password: ");
        attempt = Console.ReadLine();
    
        if (attempt == pass)
        {
            Console.WriteLine("Access granted.");
            i = 4;
        }
        else
        {
            Console.WriteLine("Access denied.");
        }
    };
    

    【讨论】:

      【解决方案2】:
      const string pass = "Password";            
      string attempt;
      
      int n = 0;
      do
      {
          Console.Write("Please enter password: ");
          attempt = Console.ReadLine();
      
          if (attempt == pass)
          {
              Console.WriteLine("Access granted.");
              break;
          }
          else
          {
              Console.WriteLine("Access denied.");
              n++;
          }
      } while (n<=3);
      

      【讨论】:

        【解决方案3】:

        您可以执行以下操作:

        const string pass = "Password";            
        string attempt;
        int attempt = 0;
        
        do
        {
            Console.Write("Please enter password: ");
            attempt = Console.ReadLine();
        
            if (attempt == pass)
            {
                Console.WriteLine("Access granted.");
            }
            else
            {
                Console.WriteLine("Access denied.");
                attempt++;
            }
        } while (attempt <= 3 && attempt != pass);
        

        【讨论】:

          【解决方案4】:
                   string pass = "";
          
                  while (pass != "password")
                  {
                      Console.WriteLine("enter your password here");
                      pass = Convert.ToString(Console.ReadLine());
                      if (pass == "password")
                      {
                          Console.WriteLine("your password is correct");
                      }
                }
                  Console.ReadKey();
          

          【讨论】:

          • 你的答案不符合要求(询问3次,然后中止),即使密码正确也会无限循环。您也不应该对密码进行硬编码,而是使用问题中的变量。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-03-22
          • 1970-01-01
          • 2011-03-25
          • 1970-01-01
          • 2016-05-01
          • 1970-01-01
          相关资源
          最近更新 更多