Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- public class IbanBerechnen {
- public static String erzeugeIban(String laenderkennung, String blz, String nummer) {
- // normalize country code
- laenderkennung = laenderkennung.toUpperCase();
- // normalize nummer
- if(nummer.length() < 10) {
- int diff = 10 - nummer.length();
- final StringBuilder builder = new StringBuilder(10);
- builder.append(nummer);
- for(; diff > 0; diff--) {
- builder.insert(0, '0');
- }
- nummer = builder.toString();
- }
- assert nummer.length() == 10;
- // assemble BBAN
- final String bban = blz + nummer;
- assert bban.length() == 18;
- // compute pruefzahl
- final String pruefzahl;
- {
- // compute country code digits
- final String countryCodeDigits;
- {
- final int offset = -'A' + 10;
- assert laenderkennung.length() == 2;
- countryCodeDigits =
- String.valueOf(laenderkennung.charAt(0) + offset) +
- String.valueOf(laenderkennung.charAt(1) + offset);
- }
- // calculate pruefzahl % 97
- int mod97 = -1;
- String remaining = bban + countryCodeDigits + "00";
- while(remaining.length() > 2) {
- mod97 = Integer.parseInt(remaining.substring(0, Math.min(9, remaining.length()))) % 97;
- remaining = String.valueOf(mod97) + remaining.substring(Math.min(9, remaining.length()));
- }
- assert mod97 != -1;
- // calculate pruefzahl
- final int num = 98 - mod97;
- pruefzahl = num < 10 ? "0" + String.valueOf(num) : String.valueOf(num);
- }
- assert pruefzahl.length() == 2;
- return laenderkennung + pruefzahl + bban;
- }
- public static void main(String[] args) {
- final Scanner sc = new Scanner(System.in);
- System.out.println(erzeugeIban(sc.next(), sc.next(), sc.next()));
- sc.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment