Java :: Aufgabe #69

1 Lösung Lösung öffentlich

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

Lösungen:

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);
	}
}
2099159

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.