このプログラムは、文字列、パスワードへの入力を受け入れることを想定しています。次に、プログラムは、パスワードの長さが8文字以上で、2桁以上で、文字と数字のみが含まれていることを確認します。私が見たところ、この方法は機能するはずですが、少なくとも2桁を数える正しい方法を取得できないようです。
これは、スレッド "main"で例外が発生するエラーです。java.lang.StringIndexOutOfBoundsException:文字列インデックスが範囲外です:10 at java.lang.String.charAt(String.java:658)at Password.main(Password.java:35 )。
import java.util.*;
public class Password{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String s;
int numbers = 0;
System.out.println("Enter a password (Must contain only letters and numbers, ");
System.out.print("minimum of 8 characters with atleast two numbers): ");
s = input.nextLine();
while(1==1){
if (s.length() < 8){
System.out.println("Password is too short");
System.out.println("Enter correctly formatted password");
s = input.nextLine();
continue;
}
if (s.matches("^[a-zA-Z0-9_]+$")){
}
else{
System.out.println("Password may only contain Letters and Digits");
System.out.println("Enter correctly formatted password");
s = input.nextLine();
continue;
}
int i;
for (i = 0; i <= s.length(); i++){
if (Character.isDigit(s.charAt(i))){
numbers++;
}
}
if (numbers < 2){
System.out.println("Password must contain atleast 2 digits");
System.out.println("Enter correctly formatted password");
s = input.nextLine();
continue;
}
break;
}
while (0==0){
System.out.println("Reenter Password to see if it matches");
String a = input.nextLine();
if (s.equals(a)){
System.out.println("Password matches!");
break;
}
else{
System.out.println("Password does not match");
continue;
}
}
}
}