Так что я пытаюсь получить это принимать пользовательский ввод в виде строки и проверьте пароль, чтобы убедиться, что из этих двух вещей:Java беда, если строка пароля действительна
- пароля представляет собой минимум 8 символов.
- Пароль содержит только буквы и цифры.
Теперь проблема заключается в следующем: Проверка пароля минимум 8 символов работает, но проверка его, чтобы убедиться, что содержит только буквы и цифры не работают. Он просто заканчивается, не указывая ни одного сообщения, если введено минимальное количество цифр/букв. Однако, если он видит, что символ не является буквой или номер, он будет печатать эту:
Пожалуйста, введите пароль: ###
Пароль может содержать только буквы и цифры.
Пароль может содержать только буквы и цифры.
Пароль может содержать только буквы и цифры.
Пароль принят!
Что следует выводить так:
Пожалуйста, введите пароль: ###
Пароль может содержать только буквы и цифры.
или
Пожалуйста, введите пароль: test1234
Пароль принят!
password.java
package Password;
import java.util.Scanner;
public class Password {
public static void main(String[]args)
{
Scanner input = new Scanner (System.in);
boolean valid = true;
System.out.println("Please enter a password:");
String password = input.nextLine();
int i = 0;
//declares i as the counter varible to control the loop and initializes it to 0
if((password.length() < 8)) //check the passwords length and make sure it's a minimum of 8 characters
{
System.out.println("Password must have at least 8 characters.");
valid = false;
}
//loops the code below it for the length of i until the password length is reached
while(i < password.length())
{
if ((password.charAt(i)>='a' && password.charAt(i)<='z') || (password.charAt(i)>='A' && password.charAt(i)<='Z') ||(password.charAt(i)>='0' && password.charAt(i)<='9'))
//loop through all the characters in the string entered and make sure they only consist of letters and numbers
valid = true;
else
{
System.out.println("Password can only contain letters and numbers.");
valid = false;
}
i++;
//add an iteration to the loop
}
if(!valid == true)
System.out.println("Password accepted!");
}
}
Любая помощь вообще с этим будет замечательной.
Помогает ли это: http://stackoverflow.com/questions/13674449/checking-password-code? – ppasler
Как только вы обнаружили недопустимый символ, вы должны установить значение false и выйти из цикла. В противном случае вы рискуете снова установить флаг, действительный для true. –