《Java语言程序设计》编程练习6.18(检测密码)

6.18 (检测密码)一些网站对于密码具有一些规则。编写一个方法,检测字符串是否是一个有效密码。
    假定密码规则如下:
    • 密码必须至少8位字符。
    • 密码仅能包含字母和数字。
    • 密码必须包含至少两个数字。
编写一个程序,提示用户输入一个密码,如果符合规则,则显示Valid Password,否则显示Invalid Password。
 1 /**     fileName:    passwdRule.java   
 2         function:   检测输入的密码是否符合密码规则
 3         create Time:2019/10/17
 4         mail:       [email protected]
 5   */
 6 
 7 import java.util.Scanner;
 8 public class passwdRule{
 9     public static void main(String[] args){
10 
11         Scanner input = new Scanner(System.in);
12         System.out.print("请输入密码:");
13         String passwd = input.next();
14 
15         //密码检测
16         if(passwdDigit(passwd)){
17             if((getPasswdNumber(passwd) >= 2) && ((getPasswdNumber(passwd)+getPasswdDigitNumber(passwd)) == passwd.length())){
18                 System.out.println("Valid Password 通过");
19             }else
20                 System.out.println("Invalid Password 不通过");
21         }else{
22             System.out.println("Invalid Password 不通过");
23         }
24     }
25     
26     /** 检测passwd的位数长度是否符合规则, 符合返回true*/
27     public static boolean passwdDigit(String passwd){
28         //设置最大字符限制和最小字符限制
29         final int MAX = 1024;
30         final int MIN = 8;
31         int passwdLength = passwd.length();
32         if((passwdLength >= MIN) && (passwdLength < MAX))
33             return true;
34         return false;
35     }
36 
37     /** 返回passwd中的数字或字母个数 ,k为0表示数字,1表示字母 */
38     public static int getPasswdDigitNumber(String passwd){
39         //字母个数
40         int digitNumber = 0;
41         char digitUpper;
42         for(int i = 0; i< passwd.length(); i++){
43             digitUpper = Character.toUpperCase(passwd.charAt(i));
44             if(digitUpper > 'A' && digitUpper < 'Z')
45                 digitNumber++;
46         }
47         return digitNumber;
48     }
49 
50     /** 返回passwd的数字个数 */
51     public static int getPasswdNumber(String passwd){
52         int number = 0;
53         int arrayNumber;
54         
55         for(int i = 0; i < passwd.length(); i++){    
56             arrayNumber = passwd.charAt(i);
57             if((int)arrayNumber > 47 && (int)arrayNumber < 58)
58                 number++;
59         }
60         return number;
61     }
62 }

这个代码写了1个晚上,删了写,最后发现charAt(i)这个是重点!

猜你喜欢

转载自www.cnblogs.com/buyiyangdefengcai/p/11696102.html