問題の説明:
一部の Web サイトでは、パスワードに特定の規則が課されています。文字列が有効なパスワードかどうかをチェックするメソッドを作成します。パスワード規則が次のようになっているとします。
- パスワードは 8 文字以上である必要があります。
- パスワードは文字と数字のみで構成されています。
- パスワードには、少なくとも 2 桁の数字が含まれている必要があります。
ユーザーにパスワードの入力を促し、ルールに従っている場合は「有効なパスワード」、それ以外の場合は「無効なパスワード」を表示するプログラムを作成してください。
これは私がこれまでに持っているものです:
import java.util.*;
import java.lang.String;
import java.lang.Character;
/**
* @author CD
* 12/2/2012
* This class will check your password to make sure it fits the minimum set requirements.
*/
public class CheckingPassword {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Please enter a Password: ");
String password = input.next();
if (isValid(password)) {
System.out.println("Valid Password");
} else {
System.out.println("Invalid Password");
}
}
public static boolean isValid(String password) {
//return true if and only if password:
//1. have at least eight characters.
//2. consists of only letters and digits.
//3. must contain at least two digits.
if (password.length() < 8) {
return false;
} else {
char c;
int count = 1;
for (int i = 0; i < password.length() - 1; i++) {
c = password.charAt(i);
if (!Character.isLetterOrDigit(c)) {
return false;
} else if (Character.isDigit(c)) {
count++;
if (count < 2) {
return false;
}
}
}
}
return true;
}
}
プログラムを実行すると、パスワードの長さだけがチェックされます。文字と数字の両方をチェックしていることを確認する方法と、パスワードに少なくとも 2 桁の数字が含まれていることを確認する方法がわかりません。