LogikFehler in der Klasse Zahlung
parent
b123254ea3
commit
03d5b1294b
|
@ -23,7 +23,7 @@ class Allgemeine_Test {
|
|||
String kennzeichen = "MA-SH 4077";
|
||||
String einfahrt = "01.10.2024, 14:30";
|
||||
String ausfahrt = "01.10.2024, 14:50";
|
||||
String GueltigeVISAKartennummer = "9823192757222993";
|
||||
String GueltigeVISAKartennummer = "4509472140549006";
|
||||
|
||||
// Einfahren: True => Beide assertTrue Tests.
|
||||
String einfahren = system.einfahren(kennzeichen, einfahrt);
|
||||
|
|
|
@ -28,14 +28,15 @@ class JTest_checkVisakarte {
|
|||
String ausfahrt = "01.10.2024, 14:50";
|
||||
parkhaus.einfahren(kennzeichen, einfahrt);
|
||||
parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt);
|
||||
|
||||
String GueltigeVISAKartennummer = "9823192757222993";
|
||||
|
||||
String GueltigeVISAKartennummer = "4509472140549006";
|
||||
// Gültige Nummer => True
|
||||
assertTrue(parkhaus.checkVisakarteNummer(GueltigeVISAKartennummer));
|
||||
|
||||
|
||||
// Ungültige Nummer => True (da der Test False testet)
|
||||
String ungueltigeVISAKartennummer = "1462 8275 1074 2151";
|
||||
assertFalse(parkhaus.checkVisakarteNummer(ungueltigeVISAKartennummer));
|
||||
String ungueltigeVISAKartennummer = "4509472140549002";
|
||||
assertFalse(parkhaus.checkVisakarteNummer(ungueltigeVISAKartennummer), "Das war falsch");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -3,32 +3,41 @@ package Parkhaus;
|
|||
public class Zahlung {
|
||||
|
||||
public static boolean checkVisaKarte(String visakarteNummer) throws Exception {
|
||||
if (visakarteNummer.length() < 16)
|
||||
if (visakarteNummer.length() != 16)
|
||||
throw new Exception("Die Nummer Ihre Visakart ist falsch");
|
||||
|
||||
char[] arr = visakarteNummer.toCharArray();
|
||||
|
||||
int index = 0;
|
||||
int summe = 0;
|
||||
int faktor = 2;
|
||||
int Differenz = 10;
|
||||
String letzteZiffer = visakarteNummer.substring(visakarteNummer.length() - 1, visakarteNummer.length());
|
||||
int p = Integer.parseInt(letzteZiffer);
|
||||
// Umwandle jede charZiffer alse integer Ziffer
|
||||
// Verdopple jede zweite Ziffer
|
||||
for (int i = arr.length - 1; i >= 0; i--) {
|
||||
for (int i = arr.length - 2; i >= 0; i--) {
|
||||
arr[i] -= '0';
|
||||
|
||||
if (index == 0)
|
||||
if (index == 0) {
|
||||
index++;
|
||||
|
||||
else {
|
||||
index--;
|
||||
arr[i] *= 2;
|
||||
// Wenn ziffer > 9, ziehe 9 einfach ab
|
||||
arr[i] *= faktor;
|
||||
// Wenn ziffer > 9, ziehe 9 einfach ab (Quersumme)
|
||||
if (arr[i] > 9)
|
||||
arr[i] -= 9;
|
||||
}
|
||||
|
||||
else
|
||||
index--;
|
||||
|
||||
summe += arr[i];
|
||||
}
|
||||
|
||||
return (summe / 10) % 2 == 0;
|
||||
|
||||
summe %= 10;
|
||||
summe = Differenz - summe;
|
||||
|
||||
return summe == p;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue