2012-05-13 5 views
1
public class Driver { 
    public static void main(String args[]) { 

     Encryption pass = new Encryption(); 

     while(CODE){ 
      System.out.println("Please enter a password"); 
      String name = KeyboardReader.readLine(); 

      System.out.println("Encrypted Password: " + pass.encrypt(name)); 
      System.out.println("Decrypted Password: " + pass.decrypt(name)); 
     } 
    } 

    boolean isValidLength (String password) { 
     if (password.length() < minLength) { 
      return true; 
     } else { 
      return false; 
     } 
    } 
} 

上記のステートメントを真にすることで、どうすればいいですか?私は、ユーザーが十分な長さのパスワードを入力しなかった場合、または有効なパスワードを入力しなかった場合、再度入力することができるようにする必要があります。私のwhileループが正しいかどうかはわかりませんが、isValidLengthメソッドを呼び出してtrueにする必要があります。見つかった間違いも参考になります。これに似たステートメントを真にする(別のクラスからの呼び出し方法)

+0

私はあなたがあなたのインデントに細心の注意を払うことを提案するつもりです。現在のところ、インデントはかなり不安定であるため、コードを読みにくいです。これは、読みやすいコードを書く上で重要な点であり、最初から練習する必要があります。 –

+0

申し訳ありませんが、私は次回より注意を払うつもりです。 –

+0

また、コードを転記する前にタブをスペースに変換してください。 –

答えて

0

何か:

while(true){ 
    //read the password 
    ... 
    if (isValidLength(password)){ 
     break; 
    } 
} 
//proceed with encryption 
... 
0

私はdo ... while代わりのwhileループを使用してお勧めしたいです。擬似コードで:また

boolean ok = false; 
while (!ok) { 
    <get user input> 
    ok = <check validity of user input> 
} 

、私はあなたが現在isValidLengthで持っているロジックを考える:あなたはwhileループを使用する必要がある場合

boolean ok; 
do { 
    <get user input> 
    ok = <check validity of user input> 
} while (!ok); 

は、ちょうどokfalseに上記のロジックを使用しますが、初期化します後方にある。 mainから呼び出す場合は、staticと宣言する必要があります。

0

私が注意を必要とするいくつかのことを見ることができます:

  • pass.decrypt(name)へのあなたの呼び出しは平文decrypt()呼び出された関数に、ユーザーが入力した渡すことが表示されます。代わりに戻り値pass.encrypt(name)を代わりに渡したかったでしょうか?文字列の長さがあなたの最小より小さい場合

  • あなたisValidLength()機能はtrueを返します。私はあなたがこれを逆にしたいと思う。 breakは、ループの途中にある、この構築物で

    while (true) { 
        System.out.println("Please enter a password:"); 
        String name = KeyboardReader.readLine(); 
        if (isValidLength(name)) { 
         break; 
        } 
        System.out.println("Your entered password was not long enough."); 
    } 
    System.out.println("Encrypted Password: " + pass.encrypt(name)); 
    // ... rest of code 
    

    :あなたのwhile Forループ

、私は一般的に「ループ半」と呼ばれる構造を示唆しています。ループの下半分は、誤った入力を訂正するために必要なことをユーザーに伝える場所です。ループが終了した後、ユーザーの入力がisValidLength()チェックに合格したとみなすことができます。

+0

「isValidLength」は、条件が「真」の場合は「真」を返し、条件が「偽」の場合は偽を返します。 –

+0

@MarkoTopolnik:はい、そうです。私は冗長コードがこの時点で論理エラーよりも重要性が低いと考えています。 :) –

+0

ええ、それはどこから始めるべきかわからないコードの1つです。 –

関連する問題