LogikFehler in der Klasse Zahlung

main
3009594 2024-10-05 20:36:36 +02:00
parent b123254ea3
commit 03d5b1294b
3 changed files with 26 additions and 16 deletions

View File

@ -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);

View File

@ -29,13 +29,14 @@ class JTest_checkVisakarte {
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");
}

View File

@ -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;
}
}