0

キーコードが一連の条件に一致するかどうかを確認するための簡単なJavaプログラムを作成したいと思います。

これは私がこれまでに持っているものです:

Scanner keycode = new Scanner(System.in);
System.out.println("Input keycode");
String key1 = keycode.nextLine();

do {

    if (key1.length() < 6 || key1.length() > 8) {

        System.out.println("must be at least 6 letter and max 8 letter");
        return;
    }

    else {

        boolean upper = false;
        boolean lower = false;
        boolean number = false;

        for (char c : key1.toCharArray()) {
            if (Character.isUpperCase(c)) {
                upper = true;
            } else if (Character.isLowerCase(c)) {
                lower = true;
            } else if (Character.isDigit(c)) {
                number = true;
            }
        }
        if (!upper) {
            System.out.println("must contain at least one uppercase character");
            return;
        } else if (!lower) {
            System.out.println("must contain at least one lowercase character");
            return;
        } else if (!number) {
            System.out.println("must contain at least one number");
            return;
        } else {
            return;
        }
    }

} while (true);

System.out.println("Input keycode again");
String key2 = keycode.nextLine();

if (key1.equals(key2)) {

    System.out.println("keycode matched");
} else {
    System.out.println("keycode dont match");

}

ユーザーはキーコードを入力するように求められます。

プログラムは最初に、それが6文字を超え8文字未満であるかどうかをチェックします。

次に、小文字、大文字、および数字が含まれているかどうかを確認します。

ユーザーがもう一度やり直すのではなく、間違いを犯した場合にパスワードをもう一度入力できるようにしたいと思います。

成功すると、ユーザーにキーコードを再度入力するように求められます。2つのキーコードが一致しない場合、ユーザーは再試行できます。3回失敗すると、システムは「キーコードの不一致」で応答します。

私が支援を必要としているのは、要件に合わない場合やパスワードの不一致がある場合に、ユーザーがパスワードを入力できるようにすることです。6文字未満のパスワードを入力すると、次の出力が得られます。

must be at least 6 letter and max 8 letter
must be at least 6 letter and max 8 letter
must be at least 6 letter and max 8 letter
must be at least 6 letter and max 8 letter
must be at least 6 letter and max 8 letter
4

4 に答える 4

2

ループを使用する

boolean flag=false;
while(flag!=true)
{
    Scanner keycode =  new Scanner(System.in);
    System.out.println("Input keycode");
    String key1 = keycode.nextLine();
    if (key1.length() < 6 || key1.length() > 8) {

    System.out.println("must be at least 6 letter and max 8 letter");

    } 
    else
    {
         flag=true;
    }
}
于 2012-10-24T08:40:59.117 に答える
0

String key1 = keycode.nextLine();必要になるたびにユーザーが照会されるように、行をdoループ内に配置する必要があります。それ以外の場合は、常に同じ値を何度もチェックするループに陥っています。

于 2012-10-24T08:41:12.587 に答える
0

boolean変数sayを使用しますredo。そして、returnを使用したすべての場所で、それを。に置き換えますredo = true。また、while条件は、ユーザーが正しい番号を入力しなくwhile(redo)なるまで実行されます。redo is true

また、あなたの読書ラインを動かしてくださいinput:-

String key1 = keycode.nextLine();

do-whileループの内部。また、redo変数をループ内にリセットして、永久falseに残らないようにします。true

String[] keys = new String[2];  // Since you are reading 2 keys, so size = 2
boolean redo = false;
int count = 0;    // To maintain the number of keys read. should stop at count = 2

do {

    redo = false;
    Scanner keycode =  new Scanner(System.in);

    System.out.println("Input keycode No: + " + (count + 1));
    String key1 = keycode.nextLine();

    if (key1.length() < 6 || key1.length() > 8) {
        redo = true;

    } else {
        /** Your remaining code **/

        if (!upper) {
            System.out.println("must contain at least one uppercase character");
            redo = true;

        } else if (!lower) {
            System.out.println("must contain at least one lowercase character");
            redo = true;

        } else if (!number) {
            System.out.println("must contain at least one number");
            redo = true;

        } else {
            keys[count++] = key1;  // Enter a new key in array
        }
    }

} while (redo || count < 2);  

if (keys[0].equals(keys[1])) {
    System.out.println("Keys are equal");
}
于 2012-10-24T08:44:01.547 に答える
0
boolean redo = false;

do {
    redo = false;
    Scanner keycode =  new Scanner(System.in);
    System.out.println("Input keycode");
    String key1 = keycode.nextLine();

    if (key1.length() < 6 || key1.length() > 8) {
        redo = true;

    } else {
        /** Your remaining code **/

        if (!upper) {
            System.out.println("must contain at least one uppercase character");
            redo = true;

        } else if (!lower) {
            System.out.println("must contain at least one lowercase character");
            redo = true;

        } else if (!number) {
            System.out.println("must contain at least one number");
            redo = true;
        }

          else{
          System.out.println("Input keycode again");
          String key2 = keycode.nextLine();

          if (key1.equals(key2)) {

           System.out.println("keycode matched");
            } else {
             System.out.println("keycode dont match");

             }

       }

    }

} while (redo);

私はここにコードを収めることができましたが、それが正しい方法かどうかわかりませんか?

于 2012-10-24T09:45:14.220 に答える