import java.util.regex.Matcher; import java.util.regex.Pattern; class Zahlungsabwicklung { private static final String KREDITKARTEN_REGEX = "^\\d{16}$"; // Regex für eine 16-stellige Kreditkartennummer private static final Pattern KREDITKARTEN_PATTERN = Pattern.compile(KREDITKARTEN_REGEX); // Kreditkartenvalidierung public static boolean validiereKreditkarte(String kreditkartennummer) { Matcher matcher = KREDITKARTEN_PATTERN.matcher(kreditkartennummer); return matcher.matches() && validierePruefziffer(kreditkartennummer); } // Validierung der Prüfziffer für eine 16-stellige Kreditkartennummer (Luhn-Algorithmus) private static boolean validierePruefziffer(String kartennummer) { int summe = 0; boolean verdoppeln = false; for (int i = kartennummer.length() - 1; i >= 0; i--) { int ziffer = Character.getNumericValue(kartennummer.charAt(i)); if (verdoppeln) { ziffer *= 2; if (ziffer > 9) { ziffer -= 9; } } summe += ziffer; verdoppeln = !verdoppeln; } return (summe % 10) == 0; } }