用循环重新启动程序



我看了很多帖子,似乎找不到一个关于我的问题的答案。

我是java的初学者,必须编写一个程序,用户在其中输入密码,然后我对程序进行检查以确保它符合要求:

  • 至少8个字符
  • 包含大写字母和小写字母
  • 包含特殊字符

这样做之后,它应该询问用户是否想要输入另一个。下面是我的代码:

public class Password
{
   public static void main(String args[])
   {
      String SPECIAL_CHARACTERS = "!@#$%^&*()~`-=_+[]{}|:";',./<>?";
      int MIN_PASSWORD_LENGTH = 8;
      Scanner scan = new Scanner(System.in);
      String password;
      char answer;
      boolean continueRun = true;

      while(continueRun)
      {
         password = "";
         System.out.print("Enter a password: ");
         password = scan.nextLine();
         boolean hasUppercase = !password.equals(password.toLowerCase());
         boolean hasLowercase = !password.equals(password.toUpperCase());
         boolean hasSpecial   = !password.matches("[A-Za-z0-9 ]*");
         boolean atLeast8   = password.length() >= 8;
         if(!hasUppercase || !hasLowercase || !atLeast8 || !hasSpecial)
         {
           System.out.println("Entered password is:t" + password);
           System.out.println("Verdict:tInvalid");
         }
         else
         {
           System.out.println("Entered password:t" + password);
           System.out.println("Verdict:ttValid");
         }
         System.out.print("Enter another password? Y/N: ");
           answer = scan.next().charAt(0);
           if (answer != 'Y')
           {
           continueRun = false;
           }
     }
   }
}

我知道这可能不是最有效或最干净的,但它可以完成任务。我唯一的问题是,每当用户决定继续输出时,输出是这样的:

Enter another password? Y/N: Y
Enter a password: Entered password is:  
Verdict:    Invalid
Enter another password? Y/N:

我如何让它像程序开始时那样重复呢?

像这样将Scanner放入循环中

while(continueRun)
{
    Scanner scan = new Scanner(System.in);
    ...

程序将再次要求用户输入新密码

相关内容

最新更新