1

このプログラムの行は、文字列が 5 文字であり、文字 "u" で始まることを確認するために文字列をテストすることを想定しています。現在、テストの 2 番目の部分ではなく、文字列が 5 文字かどうかのみをテストしていますか?

String UID;
        do {
            System.out.println("Enter the Student's UID in the form of u####");
            UID = input.nextLine();
            if (UID.length() != 5) {
                System.out.println("INCORRECT INPUT");
            }
        } while (UID.length() != 5 && UID.charAt(0) != 'u');
        return UID;
    }
4

2 に答える 2

1

大幅に簡素化できます:

while (true) {
    System.out.println("Enter the Student's UID in the form of u####");
    String UID = input.nextLine();
    if (UID.length() == 5 && UID.charAt(0) == 'u') {
        return UID;
    }
    System.out.println("INCORRECT INPUT");
} 

そしてさらに

...
if (UID.matches("u....")) {
...
于 2012-11-17T03:27:07.713 に答える
1

条件チェックを次のように変更する必要があります。

do {
    //... 
    if(UID.length() != 5 || UID.charAt(0) != 'u') {
        //incorrect input
    }
} while(UID.length() != 5 || UID.charAt(0) != 'u');
//continue until either of the conditions is true

また、ループ自体の内部でチェックする必要はありません。

IMO、条件チェックは一度だけ行ったほうがいいでしょう

while(true) {
    //... 
    if(UID.length() != 5 || UID.charAt(0) != 'u') {
        //incorrect input
    } else {
        break;
    }
} 

メソッドを使用することもできますString.startsWith(String)

于 2012-11-17T02:50:30.757 に答える