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

1 Lösung Lösung öffentlich
#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
#5
vote_ok
von PC-principal (1340 Punkte) - 02.01.2017 um 14:03 Uhr
Quellcode ausblenden Java-Code
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

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2100258

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.