# IBAN Prüfsumme berechnen ohne BigInteger



## Chax (11. Dez 2014)

Salut liebe Javaforum-Gemeinde,

schon etwas länger lese ich mich hier durch, konnte die ein oder andere Hilfe mir aus diesem Forum entziehen, nur finde ich leider keinerlei Lösungsansätze für mein momentanes Problem.

Meine Aufgabenstellung ist es, einen Algorithmus zur Berechnung der Prüfziffer aufzustellen.

Hier ein kleiner Ansatz, wie ich erst Mal die BLZ, Kontonummer in eine Prüfsumme als String konvertiere:


```
import java.util.Scanner;

class IBAN {

	public static void main (String[] args) {
	Scanner scan = new Scanner (System.in);
	int de = 1314;
	
	System.out.println("Bankleitzahl bitte eingeben");
	int blz = scan.nextInt();
	System.out.println("Kontonummer bitte eingeben");
	long knr = scan.nextInt();
	
	String sum = ""+blz+knr+de+"00";
	
	System.out.printf("Pruefsumme = %s%n", sum);
        }
}
```

Jetzt zu meinem Problem.. wir dürfen vom Prof aus keine BigInteger benutzen, und ich bräuchte einen  Lösungsansatz, wie ich eine derartig große Zahl (Zeile 15) Modulo 97 rechnen kann.

Ich möchte bitte keine Lösungsvorschläge, sondern Denkanstöße. Was ist der Hintergrund eines BigIntegers und wie wird damit gerechnet und wie kann das selber umsetzen?

(Falls jemand nicht weiß, wie die Prüfsumme berechnet wird, kann sich das hier durchlesen.)

Liebe Grüße

Chax

#edit: Ok my bad, sehe gerade ganz unten gibt es einen Bereich für "Hausaufgaben", vielleicht möchte das einer der Mods/Admins vielleicht den Post verschieben, danke ^^


----------



## Flown (11. Dez 2014)

Dann musst du das händisch machen und mit String arbeiten. Das heißt du gehst char für char durch deine Nummer. Dabei hälst du dir eine variable die jedes mal mit 10 multipliziert wird und danach kommt der aktuelle char als Ziffer hinzu. Danach musst du nur noch diese Variable % 97 rechnen und der Spaß geht von vorne los.



```
createCheckNumber(s : String) : int {
  var check = 0;
  for(i <- 0 ... s.length) {
    check = (check * 10 + s[i]) % 97;
  }
  return 98 - check;
}
```


----------



## Chax (11. Dez 2014)

Ah natürlich, danke. Das witzige ist, dass mein alter Lösungansatz den ich hatte schon richtig war, ich nur am Ende vergessen habe 98-die Zahl zu rechnen.

Danke danke für die Hilfe!


----------

