前言
很多网站初始密码都是“123456”,为保障账号安全,第一次登录会强制修改密码为加强密码,已知某网站加强密码需要同时满足以下规定:长度为6-16;必须同时包含大写字母、小写字符、数字和特殊符号;首位必须为大写字母。
请你编写一个程序,判断用户设置的密码是否为加强密码。
提示:以下是本篇文章正文内容
输入格式:
输入第一行为一个整数T(1<=T<=20),代表测试数据的组数,随后T行,每行都是由小写字母、大写字母、数字、特殊符号组成的一串字符s,长度不超过20,特殊符号有且仅有@、#、$、%、^、&、*。
输出格式:
输出每行字符串是否为加强密码,是,输出“Yes”,不是,输出“No”,每组输出占一行。
输入样例:
4
Ab12~
Hello123@
abc#123
good$666
输出样例:
No
Yes
No
No
代码如下【java】:
import java.util.Scanner;
public class 加强密码 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
String str[] = new String[a+1];
for(int i = 0 ; i <= a ; i++) { //str[0] = "";
str[i] = sc.nextLine();
}
for (int i = 1; i <= a; i++) {
char[] cc =str[i].toCharArray(); //将每一个元素变为char类型数组
int n=0,p=0,q=0,f=0; //n代表第一个大写字母 p代表小写字母 q代表特殊符号 f代表数字
int m = 0;//m代表大写字母
for (int j = 0; j < cc.length; j++) {
if (cc[0]<='Z'&&cc[0]>='A') {
n++;
}
if (cc[j]<='z'&&cc[j]>='a') {
p++;
}
//@、#、$、%、^、&、*
if (cc[j]=='@'||cc[j]=='#'||cc[j]=='$'||cc[j]=='%'||cc[j]=='^'||cc[j]=='&'||cc[j]=='*') {
q++;
}
if (cc[j]<='Z'&&cc[j]>='A') {
m++;
}
if(cc[j]<='9'&&cc[j]>='0') {
f++;
}
}
if (n>0&&(p+q+m+f)>=6&&(p+q+m+f)<=16&&p>0&&q>0&&m>0&&f>0) {
System.out.println("Yes");
}else {
System.out.println("No");
}
}
}
}
总结
此题思路很直白,唯一有点麻烦的就是循环输入的时候。