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 kennzeichen = "MA-SH 4077";
String einfahrt = "01.10.2024, 14:30"; String einfahrt = "01.10.2024, 14:30";
String ausfahrt = "01.10.2024, 14:50"; String ausfahrt = "01.10.2024, 14:50";
String GueltigeVISAKartennummer = "9823192757222993"; String GueltigeVISAKartennummer = "4509472140549006";
// Einfahren: True => Beide assertTrue Tests. // Einfahren: True => Beide assertTrue Tests.
String einfahren = system.einfahren(kennzeichen, einfahrt); String einfahren = system.einfahren(kennzeichen, einfahrt);

View File

@ -29,13 +29,14 @@ class JTest_checkVisakarte {
parkhaus.einfahren(kennzeichen, einfahrt); parkhaus.einfahren(kennzeichen, einfahrt);
parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt); parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt);
String GueltigeVISAKartennummer = "9823192757222993"; String GueltigeVISAKartennummer = "4509472140549006";
// Gültige Nummer => True // Gültige Nummer => True
assertTrue(parkhaus.checkVisakarteNummer(GueltigeVISAKartennummer)); assertTrue(parkhaus.checkVisakarteNummer(GueltigeVISAKartennummer));
// Ungültige Nummer => True (da der Test False testet) // Ungültige Nummer => True (da der Test False testet)
String ungueltigeVISAKartennummer = "1462 8275 1074 2151"; String ungueltigeVISAKartennummer = "4509472140549002";
assertFalse(parkhaus.checkVisakarteNummer(ungueltigeVISAKartennummer)); assertFalse(parkhaus.checkVisakarteNummer(ungueltigeVISAKartennummer), "Das war falsch");
} }

View File

@ -3,32 +3,41 @@ package Parkhaus;
public class Zahlung { public class Zahlung {
public static boolean checkVisaKarte(String visakarteNummer) throws Exception { 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"); throw new Exception("Die Nummer Ihre Visakart ist falsch");
char[] arr = visakarteNummer.toCharArray(); char[] arr = visakarteNummer.toCharArray();
int index = 0; int index = 0;
int summe = 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 // Umwandle jede charZiffer alse integer Ziffer
// Verdopple jede zweite 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'; arr[i] -= '0';
if (index == 0) if (index == 0) {
index++; index++;
arr[i] *= faktor;
else { // Wenn ziffer > 9, ziehe 9 einfach ab (Quersumme)
index--;
arr[i] *= 2;
// Wenn ziffer > 9, ziehe 9 einfach ab
if (arr[i] > 9) if (arr[i] > 9)
arr[i] -= 9; arr[i] -= 9;
} }
else
index--;
summe += arr[i]; summe += arr[i];
} }
return (summe / 10) % 2 == 0; summe %= 10;
summe = Differenz - summe;
return summe == p;
} }
} }