Also muss ich ein Programm schreiben, das den Benutzer auffordert, ein Passwort einzugeben, das drei Anforderungen erfüllen muss: mindestens 8 Zeichen lang, nur Buchstaben und Ziffern und mindestens zwei Ziffern. Die Methode, die ich erstellt habe, um diese drei Anforderungen zu überprüfen, ist meines Erachtens solide, aber mein Programm muss auch einige Ausnahmen behandeln und den Benutzer bitten, das Passwort erneut einzugeben, wenn eine der Voraussetzungen aus ist und die entsprechende Fehlermeldung angezeigt wird gehe mit jeder Anforderung mit. Ich habe eine Zeichenfolge errorMessage erstellt, um diese Nachricht weiterzuleiten, aber es gibt mir einen Fehler, wenn ich versuche, es in meinem Haupt zu nennen?Java JPasswordField
Mein anderes Problem ist, dass das Passwort in mein Programm mit JPasswordField übernommen werden muss, aber ich habe Mühe mit der Einrichtung sogar aufgrund der zahlreichen anderen Faktoren wie JPanel, Schaltflächen und Aktionsereignisse, die ich gelesen habe Komm damit klar. Ich versuchte, JPasswordField zu verwenden, und bemerkte, dass die Zeile, die das Kennwort eingibt, es als ein Array aufnimmt, wenn meine checkPassword-Methode eine Zeichenfolge benötigt, wie kann ich dieses Kennwort stattdessen als eine Zeichenfolge aufnehmen?
Dies ist, was ich für mein Programm haben bisher:
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;
}
}
}
ich in fortgeschrittenen entschuldigen, falls einige meiner Fragen scheinen rudimentär wäre jede Hilfe sehr dankbar, danke!
Haben Sie versucht, String Pass = neue Zeichenfolge (password); ' –
oh wow duh, danke! setze das direkt nach der char [] Passwortzeile und der Fehler verschwand. Würdest du zufällig wissen, warum der Aufruf für die errorMessage einen Fehler erhält? –
'errorMessage' ist nicht im Rahmen von' JOptionPane.showMessageDialog (frame, errorMessage) definiert; ' –