パスワードを入力するように要求するプログラムを作成する必要があります。少なくとも8文字、英字と数字のみ、少なくとも2桁の3つの要件に従わなければなりません。今私が考えている3つの要件を確認するために作成したメソッドですが、私のプログラムでは例外処理を行う必要があり、要件の1つがオフになっている場合にパスワードを再入力するようユーザーに依頼する必要があります。各要件に沿って進んでください。私はそのメッセージを中継する文字列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 pass = new String(password);を試しましたか? –
oh wow duh、ありがとうございました! char []パスワード行の直後に置いてください。エラーが消えました。 errorMessageの呼び出しでエラーが発生する理由を知りたいですか? –
'errorMessage'は' JOptionPane.showMessageDialog(frame、errorMessage);のスコープ内に定義されていません –