dermetfan

IBAN

Nov 22nd, 2015
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.72 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class IbanBerechnen {
  4.  
  5.     public static String erzeugeIban(String laenderkennung, String blz, String nummer) {
  6.         // normalize country code
  7.         laenderkennung = laenderkennung.toUpperCase();
  8.  
  9.         // normalize nummer
  10.         if(nummer.length() < 10) {
  11.             int diff = 10 - nummer.length();
  12.             final StringBuilder builder = new StringBuilder(10);
  13.             builder.append(nummer);
  14.             for(; diff > 0; diff--) {
  15.                 builder.insert(0, '0');
  16.             }
  17.             nummer = builder.toString();
  18.         }
  19.         assert nummer.length() == 10;
  20.  
  21.         // assemble BBAN
  22.         final String bban = blz + nummer;
  23.         assert bban.length() == 18;
  24.  
  25.         // compute pruefzahl
  26.         final String pruefzahl;
  27.         {
  28.             // compute country code digits
  29.             final String countryCodeDigits;
  30.             {
  31.                 final int offset = -'A' + 10;
  32.                 assert laenderkennung.length() == 2;
  33.                 countryCodeDigits =
  34.                     String.valueOf(laenderkennung.charAt(0) + offset) +
  35.                     String.valueOf(laenderkennung.charAt(1) + offset);
  36.             }
  37.  
  38.             // calculate pruefzahl % 97
  39.             int mod97 = -1;
  40.             String remaining = bban + countryCodeDigits + "00";
  41.             while(remaining.length() > 2) {
  42.                 mod97 = Integer.parseInt(remaining.substring(0, Math.min(9, remaining.length()))) % 97;
  43.                 remaining = String.valueOf(mod97) + remaining.substring(Math.min(9, remaining.length()));
  44.             }
  45.             assert mod97 != -1;
  46.  
  47.             // calculate pruefzahl
  48.             final int num = 98 - mod97;
  49.             pruefzahl = num < 10 ? "0" + String.valueOf(num) : String.valueOf(num);
  50.         }
  51.         assert pruefzahl.length() == 2;
  52.  
  53.         return laenderkennung + pruefzahl + bban;
  54.     }
  55.  
  56.     public static void main(String[] args) {
  57.         final Scanner sc = new Scanner(System.in);
  58.         System.out.println(erzeugeIban(sc.next(), sc.next(), sc.next()));
  59.         sc.close();
  60.     }
  61.  
  62. }
Advertisement
Add Comment
Please, Sign In to add comment