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 にする必要があります。見つかった間違いも役に立ちます。

4

3 に答える 3

0

注意が必要なことがいくつかあります。

  • の呼び出しは、ユーザーが入力したプレーンテキストを。という関数pass.decrypt(name)に渡すように見えます。代わりにの戻り値を渡したいのではないでしょうか。decrypt()pass.encrypt(name)

  • 文字列の長さが最小値より短いisValidLength()場合、関数は戻ります。逆にこれが欲しいと思います。true

あなたのwhileループについては、一般的に「ループアンドハーフ」と呼ばれる構造を提案します。

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

この構成では、breakはループの真ん中にあります。ループの下半分は、誤った入力を修正するために何をする必要があるかをユーザーに伝える場所です。isValidLength()ループが終了した後、ユーザーの入力がチェックに合格したと見なすことができます。

于 2012-05-13T20:56:33.077 に答える
0

これに似たもの:

while(true){
    //read the password
    ...
    if (isValidLength(password)){
        break;
    }
}
//proceed with encryption
...
于 2012-05-13T20:55:03.080 に答える
0

ループのdo ... while代わりに aを使用することをお勧めします。while擬似コード:

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

ループを使用する必要がある場合whileは、上記のロジックを使用して、次のように初期化okfalseます。

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

また、あなたが現在持っているロジックは逆だと思いますisValidLengthstaticから呼び出す場合も宣言する必要がありmainます。

于 2012-05-13T20:55:45.717 に答える