Te voy a pegar el código de lo que pides, xq es super sencillo, pero explicartelo paso por paso sería más lioso. Solamente espero que preguntes las dudas que tengas sobre el código para comprenderlo, porque sino no te servirá de nada y volverás a plantear dudas tan sencillas como esta...
Función para determinar si la contraseña es segura:
private static int isContraseñaSegura(String pass){
int error = 0; // Almacenaremos un código numérico que determinará dos tipos de errores: 1.- La contraseña no es segura. 2.- La contraseña no es válida por contener caracteres no válidos.
int contMayusculas = 0; // Contador de letras mayúsculas encontradas
int contMinusculas = 0; // Contador de letras minúsculas encontradas
int contNumeros = 0; // Contador de números encontrados
int longitudPass = 0; // Longitud de la contraseña.
char caracter = 0;
longitudPass = pass.length();
// Si la longitud es menor de 8 caracteres, no hace falta hacer más comprobaciones.
if (longitudPass >= 8){
int i = 0;
while(i<longitudPass && error==0){// Hacemos un bucle para recorrer toda la cadena mientras no se haya determinado ya algún error.
caracter = pass.charAt(i); // Extraemos el caracter de la posición "i"
if(Character.isLowerCase(caracter)){ // Comprobamos si el caracter es una letra minúscula
contMinusculas++;
}
else if(Character.isUpperCase(caracter)){ // Comprobamos si el caracter es una letra mayúscula
contMayusculas++;
}
else if(Character.isDigit(caracter)){ // Comporbamos si el caracter es un dígito
contNumeros++;
}
else if(caracter != '_'){ // Comprobamos si el caracter es un guión bajo.
error = 2; // Asignamos 2 al número de error para determinar que la contraseña no es válida por contener un caracter no especificado.
}
i++;
}
}
else{
error = 1; // Asignamos 1 al número de error para determinar que la contraseña no es segura
}
if(error==0){ // Si tras haber recorrido la cadena no hemos encontrado nada que haya hecho que no sea segura...
if(contMinusculas<3 || contMayusculas<2 || contNumeros<2){
error = 1; // Asignamos 1 al número de error para determinar que la contraseña no es segura
}
}
return error;
}
Para usar luego esa funcion... sería tan secillo como esto:
String pass = "contraseñaDePrueba01";
if(isContraseñaSegura(pass)==0)
System.out.println("Contraseña segura");
else if(isContraseñaSegura(pass)==1)
System.out.println("Contraseña NO segura");
else if(isContraseñaSegura(pass)==2)
System.out.println("Contraseña NO válida");
Lo dicho... espero que preguntes las dudas