1
import csci130.*;

public class Driver {
public static void main(String args[]){

    Encryption pass = new Encryption();

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

    while (true) {
        if (isValidLength(name)) {
            break;
        }
        System.out.println("Your entered password was not long enough.");
    }
    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;
 }
}

長さが十分でない場合にユーザーが長さを再入力できるように、ループを機能させるにはどうすればよいでしょうか? 今コンパイルすると、パスワードが長すぎると表示されますが、有効なパスワードを再入力することはできません。助言がありますか?

4

3 に答える 3

2

あなたは近くにいます。

前回の試行が無効だった場合にユーザーにパスワードの入力を再度求めたい場合は、質問をreadLine()while ループに移動することを検討します。

while (true) {
    System.out.println("Please enter a password:");
    String name = KeyboardReader.readLine();
    if (isValidLength(name)) {
        break;
    } else {
        System.out.println("Your entered password was not long enough.");
    }
}

また、もう 1 つの調整を行いました。「長さが足りない」というメッセージをelseブロックに移動しました。入力にさらに検証チェックを追加することにした場合、この構造はより理にかなっています。

于 2012-05-13T23:12:55.133 に答える
1

名前が読み込まれる部分をループに移動します。

String name;
while (true) {
    System.out.println("Please enter a password:");
    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));
System.out.println("Decrypted Password:  " + pass.decrypt(name));
于 2012-05-13T23:12:48.130 に答える
0

name変数が新しいパスワードを取得するように、readLine() をループに追加する必要があります。

while (true) {
    if (isValidLength(name)) {
        break;
    }
    System.out.println("Your entered password was not long enough.");

    System.out.println("Please enter a password:");
    name = KeyboardReader.readLine();
}
于 2012-05-13T23:12:42.740 に答える