这是我正在进行的任务......
实施一个程序,该程序读入用户密码并验证其是否符合以下条件: 至少8个字符
包含至少1个低位字母字符
包含至少1个大写字母
包含至少1个数字
包含来自集合的至少1个特殊字符:!@#$%^& *
不包含单词“and”或单词“end”
输出一个字符串,提示用户输入密码并包含要求 在你的输出上面。
输出声明有效或无效的字符串。如果无效,请说明尚未满足上述规则。
利用以下功能:
的indexOf
循环结构
的charAt()
ISDIGIT()
isUpperCase()
isLowerCase()
以及所需的任何其他功能
对我来说,棘手的部分是它必须返回所有缺失的东西。就像我输入一个密码的密码一样,它应该回来告诉我“你错过了一个大写字母,一个数字和一个特殊字符”
我有一个开始,但我真的很困惑如何让它回报给我。 这就是我到目前为止所拥有的
/********************************************
This program will test a password for:
8 characters
1 upper case
1 lower case
1 numeric digit
1 special character from the set !@#$%^&*
and make sure it doesn't contain AND or END
If the password complies, it will return a valid answer
If not, it will tell the user what they need to do.
*********************************************/
import java.util.Scanner;
public class YoungAmyProg5
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
String input;
//input password
System.out.println("Enter a password that follows these rules:\n Is at least 8 characters long\n Contains at least 1 lower case letter\n Contains at least 1 upper case letter\n Contains at least 1 numeric digit\n Contains at least 1 special character from the set: ! @#$%^&*\n Does NOT contain the word "and" or the word "end": ")
input= in.nextLine ();
//Put through string and reply
if
public static boolean isSecurePassword(String password) {
int lengthPassword = password.length();
if (lengthPassword >= 8 ) {
return false;
}
boolean hasUppercase = false; //uppercase
boolean hasLowecase = false; //lowercase
boolean hasDigit = false; //digit
int specialChar = input.indexOf('!', '@', '#', '$', '%', '^', '&', '*'); //special character
int word = input.indexOf ('and', 'end'); //and or end
for (int i = 0; i < lengthPassword; i++) {
char ch = password.charAt(i);
if (Character.isUpperCase(ch) ) {
hasUppercase = true;
}
if (Character.isLowerCase(ch) ) {
hasLowercase = true;
}
if (Character.isDigit(ch) ) {
hasDigit = true;
}
if (specialChar>0) {
specialChar = true;
}
if (word>0) {
word = true;
}
答案 0 :(得分:0)
除了设置变量外,您还可以创建一个存储缺失事物的列表,也可以检查是否发生错误:
List<String> missing = new ArrayList<String>();
boolean verified = true;
在if语句中,如果有些错误,请将已验证设置为false,并在列表中添加'大写字母'等字符串。
if( <password does NOT contain an upper case letter> )
missing.add("an upper case letter");
verified = false;
}
在所有if语句之后只检查验证是否为真,如果没有生成字符串并将缺失列表中的所有字符串添加到它。 (生成句子)
(我知道这将以一个有点长的代码结束,而且效率不高)
答案 1 :(得分:0)
也许你可以用另一种方式思考:当你发现违反要求时,返回false;如果最终没有违规,则返回true。