import java.util.Scanner;

public class Passwort_Check {

    public static boolean checkLaenge(String passwort) {
        return passwort.length() >= 20;
    }

    public static boolean checkKleinBuchstaben(String passwort) {

        return passwort.matches(".*[a-z].*[a-z].*[a-z].*");
    }

    public static boolean checkGrossBuchstaben(String passwort) {

        return passwort.matches(".*[A-Z].*[A-Z].*[A-Z].*");
    }

    public static boolean checkZiffer(String passwort) {

        return passwort.matches(".*[0-9].*[0-9].*[0-9].*");
    }

    public static boolean checkSonderZeichen(String passwort) {

        return passwort.matches(".*[!\\?\\$%&#@*+\\-=_.].*[!\\?\\$%&#@*+\\-=_.].*[!\\?\\$%&#@*+\\-=_.].*");
    }

    public static void main(String[] args) {
        String passwort = null;

        boolean check = false;
        Scanner in = new Scanner(System.in);
        System.out.println("Geben Sie ein Passwort zur überprüfung ein:");

        passwort = in.nextLine();
        do {

            if (!checkLaenge(passwort)) {
                System.out.println("Passwort ist zu kurz!");
            } else if (!checkKleinBuchstaben(passwort)) {
                System.out.println("Es fehlen Kleinbuchstaben!");
            } else if (!checkGrossBuchstaben(passwort)) {
                System.out.println("Es fehlen Großbuchstaben!");
            } else if (!checkZiffer(passwort)) {
                System.out.println("Es fehlen Ziffern!");
            } else if (!checkSonderZeichen(passwort)) {
                System.out.println("Es fehlen Sonderzeichen!");
            } else {
                System.out.println("Passwort ist sicher.");
                check = true;
                
            }
            if (check == false) {
                System.out.println("Geben Sie ein verbessertes Passwort zur überprüfung ein:");
                passwort = in.nextLine();
            }
        } while (check == false);

        System.out.println("...und Tschüss");
        in.close();
    }

}
