题解 | #密码强度等级#
密码强度等级
https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
String a = in.nextLine();
int cont = 0;
//长度分数
if (a.length() <= 4) {
cont += 5;
} else if (a.length() >= 5 && a.length() <= 7) {
cont += 10;
} else if (a.length() >= 8) {
cont = + 25;
} else if (a.length() < 0 && a.length() > 301) {
System.out.print("你是真能输入啊!");
}
//字母分数
int numCount = 0;
int upperCount = 0;
int lowCount = 0;
int symbol = 0;
//符号正则表达式
String regx = "[!\"#$%&'()*+,-./:;<=>?@[\\\\\\]^_`{|}~]";
for (int i = 0 ; i < a.length(); i++) {
//计算数字数量
if (Character.isDigit(a.charAt(i))) {
numCount++;
} else if (Character.isUpperCase(a.charAt(i))) {
upperCount++;
} else if (Character.isLowerCase(a.charAt(i))) {
lowCount++;
} else if (regx.indexOf(a.charAt(i))!=-1) {
symbol++;
}
}
//计算数字和字母分数
if (upperCount > 0 && lowCount > 0) {
cont += 20;
} else if (upperCount > 0) {
cont += 10;
} else if (lowCount > 0) {
cont += 10;
} else {
}
if(numCount>1){
cont += 20;
}else if(numCount>0){
cont += 10;
}else{
}
//計算符號
if (symbol == 1) {
cont += 10;
} else if (symbol > 1) {
cont += 25;
} else {
}
//計算獎勵
if(symbol>0&&lowCount>0&&upperCount>0&&numCount>0){
cont+= 5;
}else if((lowCount>0||upperCount>0)&&numCount>0&&symbol>0){
cont += 3;
}else if((lowCount>0||upperCount>0)||numCount>0){
cont += 2;
}
switch (cont/10){
case 9 :
System.out.print("VERY_SECURE");
break;
case 8 :
System.out.print("SECURE");
break;
case 7:
System.out.print("VERY_STRONG");
break;
case 6:
System.out.print("STRONG");
break;
case 5:
System.out.print("AVERAGE");
break;
case 4 :
case 3:
case 2:
case 1:
if(cont>=25){
System.out.print("WEAK");
}else{
System.out.print("VERY_WEAK");
}
break;
default:
System.out.print("VERY_WEAK");
break;
}
}
}
}
#密碼#
美的集团公司福利 798人发布