密码验证合格程序

                                                            密码验证合格程序

一、密码验证的要求:1、长度超过8

                           2、包括大小写字母、数字、其它字符,以上四种至少包括三种。

                           3、不能有相同长度超过2的字串重复。

二、输入描述:一组或多组长度超2的的字符串,每组占一行。

三、输出描述:如果符合要求输出的是合格,否则输出的是不合格。

实例:输入    021Abc9000

                     021Abc9Abc1

                     021ABC9000

                     021$bc9000

           输出   合格

                     不合格

                     不合格

                     合格

import java.util.Scanner;
public class PasswordCheck {

    @SuppressWarnings("unused")
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (true) {
            String password = sc.next();
            //判断密码的长度是否是超过8
            if (password.length() < 8) {
                System.out.println("不合格");
                return;
            }
            //定义四个变量老=来控制大小写、数字、其它字符的种类
            int upper = 0;
            int lowwer = 0;
            int digist = 0;
            int other = 0;
            
            for (int i = 0; i < password.length(); i ++) {
                //将每一个字符串取出来的是每一个的字符
                char c = password.charAt(i);
                //包含大写字母
                if (c > 'A' && c < 'Z') {
                    //包含就进if就算一个种类
                    upper = 1;
                    //包含小写字母
                } else if (c > 'a' && c < 'z') {
                    lowwer = 1;
                    //判断是否是数字
                } else if (Character.isDigit(c)) {
                    digist = 1;
                    //其它字符
                } else {
                    other = 1;
                }
            }
            //看上述情况的种类是否有三种以上
            if ((upper + lowwer + digist + other) < 3) {
                System.out.println("不合格");
                return;
            }
            
            
            //不能有相同长度超过2的字串重复。
            /**
             * 不能有相同长度超2的子串重复
             * 字符串长度减2是让截取刚好截取后三位。
             * 例如:长度为10,下标最高为9,减2 长度为8,下标i最高为7,后三位
             */
            for(int i = 0; i < password.length() - 2; i ++) {
                String sub = password.substring(i, i + 3);
                //上面的subString截取的三个字符串后三个看是否包含截取的三个字符串
                if(password.substring((i + 1)).contains(sub)) {
                    System.out.println("不合格");
                    return;
                }
            }
            System.out.println("合格");
        }
    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值