Java实现 密码检查

密码检查
问题描述:
小明同学最近开发了一个网站,在用户注册账户的时候,需要设置账户的密码,为了加强账户的安全性,小明对密码强度有一定要求:

  1. 密码只能由大写字母,小写字母,数字构成;

  2. 密码不能以数字开头;

  3. 密码中至少出现大写字母,小写字母和数字这三种字符类型中的两种;

  4. 密码长度至少为8

现在小明受到了n个密码,他想请你写程序判断这些密码中哪些是合适的,哪些是不合法的。
输入描述:
输入一个数n,接下来有n(n≤100)行,每行一个字符串,表示一个密码,输入保证字符串中只出现大写字母,小写字母和数字,字符串长度不超过100。
输出描述
输入n行,如果密码合法,输出YES,不合法输出NO
示例1
1

结果
YES

代码

public class Main {
public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        //键盘接收密码条数
        int n = sc.nextInt();
        String[] arr = new String[n];
        //利用for循环连续接收字符串,并将每一条密码用字符串数组储存
        for(int i=0;i<arr.length;i++){
            arr[i] = sc.next();
        }
        //获得每个字符串的长度
        for(int i=0;i<arr.length;i++){
            System.out.println(Length(arr[i]));
        }
    }
    /**
密码长度的判断(长度不小于8)
*/
    public static String Length(String str){
        if(str.length()<8){
            return "NO";
        }
        /**
        每条密码的首位不是数字
        */
        if(str.charAt(0)<='9'&&str.charAt(0)>='0'){
            return "NO";
        }
	/**
密码中大小写字母和数字的统计,以及对每条密码的构成进行判断
*/
        int count1=0,count2=0,count3=0;
        for(int i=0;i<str.length();i++){
            if(str.charAt(i)<'0'||(str.charAt(i)>'9'&str.charAt(i)<'A')||(str.charAt(i)>'Z'&str.charAt(i)<'a')||str.charAt(i)>'z'){
                return "NO";
            }
            if(str.charAt(i)<='9'&&str.charAt(i)>='0'){
                count1 =1;
            }
            if(str.charAt(i)<='z'&&str.charAt(i)>='a'){
                count2 =1;
            }
            if(str.charAt(i)<='Z'&&str.charAt(i)>='A'){
                count3 =1;
            }
        }
        //判断是否由大小写字母和数字的其中两种构成
        if(count1+count2+count3>=2){
            return "YES";
        }else{
            return "NO";
        }
    }
		}

示例的运行结果截图:
示例中的运行结果

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值