36 lines
1.2 KiB
Java
36 lines
1.2 KiB
Java
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;
|
|
}
|
|
}
|