Так что я должен написать программу, в которой пользователь вводит пароль, который должен соответствовать трем требованиям: длиной не менее 8 символов, только буквы и цифры и не менее двух цифр. Теперь метод, который я создал для проверки этих трех требований, которые, как мне кажется, звучат, но моя программа также должна выполнять некоторую обработку исключений и иметь возможность попросить пользователя повторно ввести пароль, если одно из требований отключено и отображает соответствующее сообщение об ошибке соглашайтесь с каждым требованием. Я создал строку errorMessage для ретрансляции этого сообщения, но он дает мне ошибку, когда я пытаюсь назвать это в моей главной?Java JPasswordField
Другая проблема заключается в том, что пароль должен быть применен к моей программе с помощью JPasswordField, но я боюсь даже настроить его из-за множества других факторов, таких как JPanel, кнопки и события действий, которые я читаю, соглашайтесь с этим. Я попытался использовать JPasswordField и заметил, что строка, которая берет пароль, принимает его как массив, когда мой метод checkPassword нуждается в строке, как я могу взять этот пароль как строку вместо этого?
Это то, что у меня есть для моей программы до сих пор:
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javafx.event.ActionEvent;
public class Ed10Chp6Ex6Point18CheckPasswordProgram {
public static void main(String[] args) {
final JFrame frame = new JFrame("Check Password Program");
JLabel jlbPassword = new JLabel("Please enter the password: ");
JPasswordField jpwName = new JPasswordField(15);
jpwName.setEchoChar('*');
jpwName.addActionListener(new ActionListener()) {
public void actionPerformed(ActionEvent e) {
JPasswordField input = (JPasswordField) e.getSource();
char[] password = input.getPassword();
if(checkPassword(password)){
JOptionPane.showMessageDialog(frame, "Congradulations, your password follows all the requirements");
}
else{
JOptionPane.showMessageDialog(frame, errorMessage);
}
}
}
}
public static boolean checkPassword(String x) {
String errorMessage = "";
//must have at least eight characters
if (x.length() < 8){
errorMessage = "The password you entered is invalid, password must be at least 8 characters";
return false;
}
//consists of only letters and digits
for (int i = 0; i < x.length(); i++) {
if (!Character.isLetter(x.charAt(i)) && !Character.isDigit(x.charAt(i))) {
errorMessage = "The password you entered is invalid, password must contain only letters and digits";
return false;
}
}
//must contain at least two digits
int count = 0;
for (int i = 0; i < x.length(); i++) {
if (Character.isDigit(x.charAt(i))){
count++;
}
}
if (count >= 2){
return true;
}
else {
errorMessage = "The password you entered is invalid, password must contain at least two digits";
return false;
}
}
}
Извиняется продвинут в случае, если некоторые из моих вопросов, кажется, рудиментарные, любая помощь будет принята с благодарностью, спасибо!
ли вы попробовать 'Струнный пасс = новый String (пароль);' –
о ничего себе Дух, спасибо! поместите это сразу после строки пароля char [], и ошибка исчезла. Не могли бы вы узнать, почему при вызове errorMessage возникает ошибка? –
'errorMessage' не определен в пределах' JOptionPane.showMessageDialog (frame, errorMessage); ' –