프로그래밍 할당을 완료하려고하는데 대문자 1 개, 소문자 1 개, 숫자 1 개 및 특수 문자 1 개가있는 "암호 확인 프로그램"을 만들어야합니다. 무효 인 경우, "무효"와 false로 표시된 규칙을 표시해야합니다. 내가 가진 문제는 오류 메시지가 아니지만 항상 긍정적 인 응답과 모든 위반 된 규칙을 얻으며 두 번 읽습니다. 여기 좀 도와 줄래?암호 확인 프로그램 문제
import java.util.Scanner;
public class PasswordVerifier {
public static void main(String[] args) {
System.out.println("Password Verifier");
System.out.println("Enter a password that meets the following rules: ");
System.out.println("-Must be at least 8 characters long" + '\n' +
"-Must contain at least 1 lower case character" + '\n' +
"-Must contain at least 1 upper case character" + '\n' +
"-Must contain at least 1 numeric digit" + '\n' +
"-Must contain at least 1 special character from the set: [email protected]#$%^&*" + '\n' +
"-Must not contain the word 'and' or the word 'end'");
String password;
String contains1 = "and";
String contains2 = "end";
String special = "[email protected]#$%^&*";
Scanner stdIn = new Scanner(System.in);
boolean digit = false; //Has at least 1 digit
boolean upper = true; //Has at least 1 upper case letter
boolean lower = true; //Has at least 1 lower case letter
boolean hasspecial = true; //Has at least 1 special character
boolean length = true; //Has at least 8 digits
boolean endand = true; //Does not contain end or and
boolean valid = false; //Is the password valid?
System.out.println("Enter password: ");
password = stdIn.nextLine();
int result;
result = password.indexOf(contains1);
if (result == -1) {
System.out.println("");
} else {
System.out.println("Must not contain the word 'and'");
}
int result2;
result2 = password.indexOf(contains2);
if (result2 == -1) {
System.out.println("");
} else {
System.out.println("Must not contain the word 'end'");
}
if (password.length() < 8) {
System.out.println("Must be at least 8 characters long.");
} else {
System.out.print("");
}
for (int i = 0; i < password.length(); i++) {
if (!(Character.isUpperCase(password.charAt(i)))) ;
{
upper = false;
valid = false;
i++;
}
if (!(Character.isLowerCase(password.charAt(i)))) ;
{
lower = false;
valid = false;
i++;
}
if (!(Character.isDigit(password.charAt(i)))) ;
{
digit = false;
valid = false;
i++;
}
if (!(password.matches(special))) ;
{
hasspecial = false;
valid = false;
}
if (upper != true) {
System.out.println("Must contain an upper case letter.");
}
if (lower != true) {
System.out.println("Must contain a lower case letter.");
}
if (digit != true) {
System.out.println("Must contain a numeric digit.");
}
if (hasspecial != true) {
System.out.println("Must contain a special character.");
}
if (valid) {
System.out.println("Valid.");
} else if (valid != true) {
System.out.println("Invalid.");
}
}
}
}
을 탈출하는 방법을 알고하지 않으며, 논문에서 알고리즘을 실행하고 각 단계에서 각 변수의 값. 힌트 : 대문자가 아닌 문자를 발견했다고해서 암호에 대문자가 없음을 의미하지는 않습니다. –
당신은 결코 ** 사실 ** ** ** 변수 **에 할당하지 않습니다. 어떻게 긍정적 인 반응을 얻을 수 있습니까 ?? – Devavrata
"valid"를 "true"로 변경했지만 동일한 문제가 발생했습니다 ... – user3313912