2016-11-25 5 views
-4

간단한 시스템을 만드는 Java 프로젝트에서 작업하고 있는데 그 중 하나가 "Change PassWord"이고, 사용자 정보 (사용자 이름 & 암호)를 텍스트 파일에 넣습니다 라는 ("Users.txt").Java의 ChangePassword 메서드

부울과 changepassword() : 이제이 방법의 설명이다 검증을 위해 기존 암호를 입력하도록 요청 최대 세 번이 올바른 오래된 암호를 입력에서, 사용자는있다; 그렇지 않으면 암호가 변경되지 않고 메시지 상자 이 사용자에게 표시됩니다. 사용자가 올 Y 른 올 Y 른 암호를 입력 한 경우, 사용자는 암호를 변경하도록 인증되고 새 암호를 입력하고 새 암호를 확인하도록 요청됩니다. 올바르게 확인되면 기존 암호가 변경되지 않고 메시지 상자가 표시되면 이전 암호가 새 것으로 변경되고 메시지 상자에 이 표시됩니다.

는이 코드 작성 :

boolean changePassword(){    
    String pass=JOptionPane.showInputDialog(null, "Enter old password: ", "Input", JOptionPane.QUESTION_MESSAGE); 
    if(pass.equals(Password)) { 
    String newpass=JOptionPane.showInputDialog(null, 
      "Enter new password: ", "Input", JOptionPane.QUESTION_MESSAGE); 
    String connewpass=JOptionPane.showInputDialog(null, 
      "Enter confirming new password: ", "Input", 
      JOptionPane.QUESTION_MESSAGE); 
    if(newpass.equals(connewpass)){ 
     Password= newpass; 
     JOptionPane.showMessageDialog(null, "password changed ", "message", 
      JOptionPane.INFORMATION_MESSAGE); 
     return true; 
    } 
    else 
    JOptionPane.showMessageDialog(null, "Wrong Conferm ", "message", 
     JOptionPane.INFORMATION_MESSAGE); 

    } 
    else 
    JOptionPane.showMessageDialog(null, "Wrong password ", "message", 
     JOptionPane.INFORMATION_MESSAGE); 

    return false; 
} 

을하지만 난 그게 잘못이라고 생각하고, 내가 생각 루프를 사용해야합니다. 도와주세요.

+3

무엇이 잘못 되었습니까? 어떻게 도와 드릴까요? – JustinKSU

+0

암호를 잘못 입력하면 사용자에게 3 번 시도해야하므로 루프를 추가해야하지만 어떻게 추가합니까? – Learner

+0

나는 논리가 괜찮다고 생각한다. 난 그냥 일반 암호를 저장하지 마십시오. 간단한 암호를 사용하여 (예 : DES와 같이) 저장하고 입력 암호에 동일한 암호를 사용하여 입력 된 암호와 상점을 비교할 수 있습니다. 다음은 암호를 암호화하는 데 사용할 수있는 간단한 클래스입니다. http://www.java2s.com/Code/Java/Security/EncryptingaStringwithDES.htm – RLM

답변

0

while 루프가 적절한 경우입니다. 이 while 루프가 어떻게 3 번 실행되는지 간단히 설명하겠습니다.

따라서 첫 번째는 n=3입니다. 조건 n-- > 0은 2 가지를 의미합니다. n이 0보다 큰지 확인하십시오. 은 n의 값을 1 씩 뺍니다.이 두 가지가 정확한 순서로 발생합니다.

따라서 조건은 n이 실제로 0보다 크고 루프를 입력하는지 확인합니다. 동시에 n도 1 씩 감소하여 3-1 = 2가됩니다.

이것은 세 번 이어집니다. 세 번째 시간이 지나면 n은 0이됩니다. 조건 0> 0은 거짓이므로 while 루프가 중단됩니다.

boolean changePassword(){    
    String pass = ""; //get old password from user 
    int n = 3; 
    while (n-- > 0) { 
    if(pass.equals(Password)) { 
     String newPass = ""; // get new password from user 
     String conNewPass = ""; // confirm new password from user 
     if (newPass.equals(conNewPass)) { 
      Password = newPass; 
      // password changed 
      return true; 
     } else { 
      // wrong confirmation.. password not changed 
      return false; 
     } 
    } 
    else { 
     // tell user to enter the correct old password 
     pass = ""; // ask user for old password again 
    } 
    } 
    // show error message that user entered the old password 3 times incorrectly 
    // and return false 
    return false; 
} 
+0

이 루프는 한 번 실행됩니다. 잘못된 확인이나 암호를 입력하려고 시도했습니다. 메시지가 나타난 다음 중지되었습니다. – Learner

+0

'// 사용자에게 올바른 이전 암호를 입력하라고 알려줍니다 '여기서 어떻게해야한다고 생각하니? – rafid059

+0

알았어 사용자에게 암호를 다시 입력하라고 요청했지만 작동했지만 이제는 암호를 입력 할 때마다 "잘못된 암호"라는 메시지 만 표시됩니다. – Learner