HDU2043密码(升级)
java版
题目:
首先,我们就要设置一个安全的密码。那什么样的密码才叫安全的呢?一般来说一个比较安全的密码至少应该满足以下条件:
密码长度大于等于8,且不要超过16。
安全密码中可拥有的四个字符类别分别为:
1.大写字母:A,B,C…Z;
2.小写字母:a,b,c…z;
3.数字:0,1,2…9;
4.特殊符号:~,!,@,#,$,%,^;
若出现别的字符算是没有作用的字符,该字符只算在总长度内(如?/等)
给出一个密码,判断它的安全程度
1.如果长度小于8,输出too lack (从上至下,如果不满足,则不需要再继续往后判断)
2.如果长度大于16,输出too long
3.密码必须是字母开头,不是的话输出no letter
4.拥有三种或者四种字符的密码,输出good
拥有两种字符的密码,输出ok
拥有一种字符的密码,输出not well
样例:
输入样例 | 输出样例 |
---|---|
1234 | too lack |
123qwertyu | no letter |
Qwertyuiop | ok |
Qwertyuiop123 | good |
qwertyuiop | not well |
Qwertyuiop% | good |
代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
while(input.hasNextLine()){
String str = input.nextLine();
int count1 = 0, count2 = 0, count3 = 0, count4 = 0; //定义计数器,统计字符种类
int sum;
int len = str.length(); //获取密码长度
if(8<=len && len<=16) { //如果密码长度满足要求,则判断3,4条是否满足
for(int i = 0;i < len; i++) {
if(Character.isLetter(str.charAt(0)) != true) {
System.out.println("no letter"); //判断开头是否是字母
break;
}
if(Character.isLowerCase(str.charAt(i)))
count1 = 1; //判断是否有小写字母
else if(Character.isUpperCase(str.charAt(i)))
count2 = 1; //判断是否有大写字母
else if(Character.isDigit(str.charAt(i)))
count3 = 1; //判断是否有数字
else if( str.charAt(i) == '!' || str.charAt(i) == '@' || str.charAt(i) == '#' || str.charAt(i) == '$' || str.charAt(i) == '%' || str.charAt(i) == '^' || str.charAt(i) == '~')
count4 = 1; //判断是否有~,!,@,#,$,%,^字符
}
sum = count1 + count2 + count3 + count4; //统计字符种类
if(sum == 1)
System.out.println("no well");
else if(sum == 2)
System.out.println("ok");
else if(sum == 3 || sum == 4)
System.out.println("good");
}
else if(len < 8)
System.out.println("too lack");
else if(len > 16)
System.out.println("too long");
}
input.close();
}
}