Java :: Aufgabe #69 :: Lösung #5
1 Lösung

#69
IBAN Checksumme prüfen
Anfänger - Java
von pocki
- 26.11.2014 um 12:27 Uhr
Schreibe eine Funktion, welche einen IBAN als Zeichenfolge entgegen nimmt.
Bei diese Zeichenfolge soll überprüft werden, ob die Checksumme/Prüfsumme für eine gültige IBAN stimmt.
Die unterschiedliche Schreibweisen (mit und ohne Freiraum) sowie die unterschiedlichen Längen je nach Land sind ebenfalls zu berücksichtigen.
Beispiele der Schreibweisen:
DE19 1234 1234 1234 1234 12
DE19-1234-1234-1234-1234-12
DE19123412341234123412
AT19 1234 1234 1234 1234
CH19 1234 1234 1234 1234 1
Bei diese Zeichenfolge soll überprüft werden, ob die Checksumme/Prüfsumme für eine gültige IBAN stimmt.
Die unterschiedliche Schreibweisen (mit und ohne Freiraum) sowie die unterschiedlichen Längen je nach Land sind ebenfalls zu berücksichtigen.
Beispiele der Schreibweisen:
DE19 1234 1234 1234 1234 12
DE19-1234-1234-1234-1234-12
DE19123412341234123412
AT19 1234 1234 1234 1234
CH19 1234 1234 1234 1234 1
#5

von PC-principal (1340 Punkte)
- 02.01.2017 um 14:03 Uhr

import java.math.BigInteger; public class IbanChecker { private static char[] alphabet = new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' }; public static boolean gueltigeIban(String s) { char[] cha = s.toCharArray(); s = "";// Schreibweise maschinenfreundlich machen for (int x = 0; x < cha.length; x++) { if (!(cha[x] == '-' || cha[x] == ' ')) s = s + cha[x]; } cha = s.toCharArray();// cha wird beim umstellen als temp benutzt char[] cha2 = new char[cha.length]; s=""; int u = 0;// ersten 4 Zeichen nach hinten while (u < 4) { cha2[cha.length - 4 + u] = cha[u]; u++; } u = 0; while (u < cha.length - 4) { cha2[u] = cha[u + 4]; u++; } int[] i = new int[cha2.length];// Buchstaben durch int Werte ersetzen for (int x = 0; x < cha2.length; x++) { for (int y = 0; y < alphabet.length; y++) { if (cha2[x] == alphabet[y]) { i[x] = y + 10; y = 50; } else { i[x] = cha2[x] - 48; } } } for (int x = 0; x < i.length; x++) { s = s + i[x]; } BigInteger bint = new BigInteger(s); bint = bint.mod(BigInteger.valueOf(97)); boolean b = false; if (bint.intValue() == 1) { b = true; } return b; } public static void main(String[] args) { String s = "IQ20-CBIQ-8618-001010-10500"; boolean b = gueltigeIban(s); System.out.println(b); } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1