密码验证合格程序
一、密码验证的要求: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("合格");
}
}
}