From 03d5b1294bff292005ca2f8a5b03c45f2138b406 Mon Sep 17 00:00:00 2001 From: 3009594 Date: Sat, 5 Oct 2024 20:36:36 +0200 Subject: [PATCH] LogikFehler in der Klasse Zahlung --- src/Parkhaus/Allgemeine_Test.java | 2 +- src/Parkhaus/JTest_checkVisakarte.java | 11 +++++----- src/Parkhaus/Zahlung.java | 29 +++++++++++++++++--------- 3 files changed, 26 insertions(+), 16 deletions(-) diff --git a/src/Parkhaus/Allgemeine_Test.java b/src/Parkhaus/Allgemeine_Test.java index ad73c53..16e3081 100644 --- a/src/Parkhaus/Allgemeine_Test.java +++ b/src/Parkhaus/Allgemeine_Test.java @@ -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); diff --git a/src/Parkhaus/JTest_checkVisakarte.java b/src/Parkhaus/JTest_checkVisakarte.java index a40e725..55091f9 100644 --- a/src/Parkhaus/JTest_checkVisakarte.java +++ b/src/Parkhaus/JTest_checkVisakarte.java @@ -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"); + } diff --git a/src/Parkhaus/Zahlung.java b/src/Parkhaus/Zahlung.java index 1d392d3..aa4a070 100644 --- a/src/Parkhaus/Zahlung.java +++ b/src/Parkhaus/Zahlung.java @@ -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; + } }