2015-01-26 61 views
0
import javax.swing.JOptionPane; 

class PasswordCreator 
{ 
     public PasswordCreator() 
     { 
       super(); 
     } 

     public static void main(String[] args) 
     { 
       PasswordCreator passwordCreator = new PasswordCreator(); 
       String userName = JOptionPane.showInputDialog("What is your username?"); 

       String passWord = JOptionPane.showInputDialog("What is your password?"); 
       System.out.println("Input : UserName "+userName+" PassWord -> "+passWord); 

       passwordCreator.passwordValidation(userName,passWord); 
       System.out.println(); 

     } 

     /* 
     * Password should be less than 15 and more than 8 characters in length. 
     * Password should contain at least one upper case and one lower case alphabet.  
     * Password should contain at least one number. 
     * Password should contain at least one special character. 
     */ 

     public void passwordValidation(String userName, String password) 
     { 
       boolean valid = true; 
       if (password.length() > 15 || password.length() < 8) 
       { 
         System.out.println("Password should be less than 15 and more than 8 characters in length."); 
         valid = false; 
       } 
       if (password.indexOf(userName) > -1) 
       { 
         System.out.println("Password Should not be same as user name"); 
         valid = false; 
       } 
       String upperCaseChars = "(.*[A-Z].*)"; 
       if (!password.matches(upperCaseChars)) 
       { 
         System.out.println("Password should contain atleast one upper case alphabet"); 
         valid = false; 
       } 
       String lowerCaseChars = "(.*[a-z].*)"; 
       if (!password.matches(lowerCaseChars)) 
       { 
         System.out.println("Password should contain atleast one lower case alphabet"); 
         valid = false; 
       } 
       String numbers = "(.*[0-9].*)"; 
       if (!password.matches(numbers)) 
       { 
         System.out.println("Password should contain atleast one number."); 
         valid = false; 
       } 
       String specialChars = "(.*[,~,!,@,#,$,%,^,&,*,(,),-,_,=,+,[,{,],},|,;,:,<,>,/,?].*$)"; 
       if (!password.matches(specialChars)) 
       { 
         System.out.println("Password should contain atleast one special character"); 
         valid = false; 
       } 
       if (valid) 
       { 
         System.out.println("Password is valid."); 
       } 
     } 
} 

如果密码无效,我希望程序要求输入新密码。我尝试过在线搜索,但是我没有成功地将其实施到我的代码中。任何人都知道吗?如何更改此java代码,以便再次询问密码是否无效?

+2

您可以返回有效的布尔结果,然后在运行passwordValidation后询问结果,如果为false,则再次询问密码。 – 2015-01-26 19:10:02

回答

5

首先,你要改变你的passwordValidation方法,因此可以返回一个布尔值指示密码是否正确:

public boolean passwordValidation(String userName, String password) { 
    boolean valid = true; 
    /* your code */ 
    return valid; 
} 

然后,在你的主要方法,你可以做这样的事情:

boolean valid = false; 
while (!valid) { 
    String passWord = JOptionPane.showInputDialog("What is your password?"); 
    valid = passwordCreator.passwordValidation(userName,passWord); 
} 

顺便说一句,passWordValidationuserName参数是无用的,因为它从来没有使用过。