2016-11-25 40 views
-4

我正在開發一個Java項目,構建一個簡單的系統,它有一些方法,其中之一是「更改密碼」,我將用戶信息(用戶名&密碼)放在一個文本文件稱爲(「Users.txt」)。 現在,這是該方法的描述:Java中的ChangePassword方法

布爾ChangePassWord():要求用戶爲 驗證輸入的舊密碼,用戶必須在最大三次嘗試進入正確的舊密碼 ;如果不是,則密碼將不會被更改,並且會向用戶顯示消息框 。如果用戶輸入正確的舊密碼,然後 他被認證,以更改他的密碼,並要求輸入新的密碼 和確認新的。一旦如果確認正確,舊的 密碼將更改爲新密碼,並且如果錯誤確認,舊密碼將不會更改並顯示 消息框,則會顯示一個消息框 。

我寫了這個代碼:

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

A while循環適合您的情況。我將簡要介紹一下這個while循環如何運行3次。因此,第一個n=3。條件n-- > 0意味着2件事。檢查n是否大於零將n的值減1。這兩種情況按照確切的順序發生。

因此,條件檢查n確實大於零並進入循環。同時n也減1,變爲3-1 = 2。

這將繼續3次。第三次之後,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