2016-11-25 6 views
-4

シンプルなシステムを構築するJavaプロジェクトに取り組んでいます。その1つは「パスワードの変更」です。ユーザーの情報(ユーザー名&のパスワード)をテキストファイル( "Users.txt")と呼ばれます。JavaのChangePasswordメソッド

ブールのChangePassword(): 今これはメソッドの記述がある 検証のために、古いパスワードを入力するようにユーザに要求し、最大3回の試行が正しい古い パスワードを入力することで、ユーザーが持っています。そうでない場合、パスワードは変更されず、メッセージボックス がユーザに表示されます。ユーザーが正しい旧パスワードを入力した場合、 彼はパスワードを変更するように認証され、新しい パスワードを入力して新しいパスワードを確認するように求められます。正しく確認されると、古いパスワードが変更されずに メッセージボックスが表示された場合、古い パスワードが新しいものに変更され、メッセージボックスに が表示されます。

私はこのコードを書いた:

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だけ減算します。これらの2つのことは、正確な順序で行われます。

したがって、nは実際にはゼロより大きく、ループに入ります。同時に、nも1だけ減少し、3-1 = 2になる。

これは3回続きます。 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