Для начала, я новичок в java, поэтому я не уверен, есть ли более простой способ сделать это. В настоящее время я создаю средство проверки пароля. У меня большая часть кода работает без сбоев, за исключением моей проверки специальных символов.
Мои проверки кода работают для длины и того, есть ли число, однако это не для моей проверки специальных символов. В настоящее время у меня установлен оператор if, где, если один из символов в строке не является буквой, di git или пробелом, чтобы иметь specialCharCheck = true. в противном случае оставьте значение false.
import java.util.Scanner;
public class Project5_Part1 {
public static void main(String[] args) {
String pass;
String confirm;
boolean parameters;
Scanner in = new Scanner(System.in);
System.out.print("Please enter password : ");
pass = in.nextLine();
System.out.print("Please re-enter the password to confirm : ");
confirm = in.nextLine();
parameters = isValid(pass);
while (!pass.equals(confirm) || (!parameters))
{
System.out.println("The password is invalid");
System.out.print("Please enter the password again : ");
pass = in.nextLine();
System.out.print("Please re-enter the password to confirm : ");
confirm = in.nextLine();
parameters = isValid(pass);
}
if (isValid(pass))
{
System.out.println("The password is valid");
}
}
public static boolean isValid(String pass) {
boolean numberCheck = false;
boolean specialCharCheck = false;
if (pass.length() < 8) {
return false;
} else {
for (int i = 0; i < pass.length(); i++)
{
if(Character.isDigit(pass.charAt(i)))
{
numberCheck = true;
}
if (!Character.isLetterOrDigit(i) && !Character.isSpaceChar(i))
{
specialCharCheck = true;
//System.out.println("Test");
}
else
{
specialCharCheck = false;
}
}
return (numberCheck && specialCharCheck);
}
}
}
я упустил простую ошибку? Я знаю, что есть другой способ сделать это, но мне показалось, что это выглядело более эффективным. И лог c имел для меня смысл.