그래서 적어도 8 자 이상, 글자와 숫자 만, 최소 두 자릿수를 따라야하는 암호를 입력하라는 메시지를 사용자에게 표시해야합니다. 이제 내가 소리라고 믿는이 세 가지 요구 사항을 확인하기 위해 만든 메소드는 예외 처리를 수행하고 요구 사항 중 하나가 해제 된 경우 사용자에게 비밀번호를 다시 입력하도록 요청할 수 있어야하며 해당 오류 메시지를 표시해야합니다. 각 요구 사항을 따라 가십시오. 나는 그 메시지를 중계하기 위해 errorMessage라는 문자열을 만들었지 만, 내 주 (main)에서 그것을 호출하려고 할 때 오류가 발생합니까?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);의 범위 내에서 정의되지 않았습니다. –