我看了很多帖子,似乎找不到一个关于我的问题的答案。
我是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);
...
程序将再次要求用户输入新密码