Zum Inhalt springen

Iban überprüfen


jeronimonino

Empfohlene Beiträge

Hallo ich würde gerne ein java programm schreiben das mit eingegebene IBANs überprüft.

Leider scheitere ich gerade daran das ich eine Abfrage mache ob der Benutzer die IBAN richtig eingegeben hat oder nicht, ist die IBAN nicht richtig eingegeben soll der Benutzer die IBAN erneut eingeben. Das habe ich mit einer do-while-schleife gemacht. Leider hört der bei der zweiten Eingabe der IBAN einfach auf.

	public static void main(String[] args){


		boolean boolja = false;


	System.out.println("Bitte gib die IBAN ein:");

	try{	

	BufferedReader input=new BufferedReader (new InputStreamReader (System.in));

	String strInput;

	strInput = input.readLine();

	System.out.println("Ist das die Richtig IBAN? " +strInput);

	do{	

	BufferedReader abfrage=new BufferedReader (new InputStreamReader (System.in));

	String line = abfrage.readLine();

	if(line.toLowerCase().equals("ja")) {

		System.out.println("super");

		boolja = true;

	}else{

		System.out.println("Dann gib die IBAN noch einmal ein");

		strInput = input.readLine();


			}

	}while (boolja == true);

	}

	catch (Exception ex)

	{

		System.out.println("Fehlerhafte Eingabe");

	}



}

Wenn mir einer von euch meinen Fehler aufzeigen würde, wäre ich sehr dankbar.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe noch einmal eine Frage hierzu und möchte deswegen ungerne einen neuen Thread eröffnen.

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.math.BigInteger;



public class Validator {


	public static void main(String[] args) {


		boolean schleife1 = false;

		String setzeLaenderCode = "00";

		BigInteger a, pruefsumme;

		a = new BigInteger("97");


		System.out.println("Bitte gib die IBAn ein, die überprüft werden soll.");

		try{

			BufferedReader input = new BufferedReader(new InputStreamReader (System.in));

			String IBAN = input.readLine();

			System.out.println("Wurde die IBAN korreckt eingegeben?" + IBAN);


			do{

				BufferedReader inputAbfrage = new BufferedReader (new InputStreamReader(System.in));

				String ibanCorrect  = inputAbfrage.readLine();

				if(ibanCorrect.toLowerCase().equals("ja")){

					System.out.println("Die IBAN wird nun ueberprueft.");

					schleife1 = true;


					/*String ohneLaenderPrefix = IBAN.substring(0,2);

					System.out.println(ohneLaenderPrefix);	

					String numIban = IBAN.substring(5,IBAN.length());

					System.out.println(numIban);*/



					StringBuilder numericIban = new StringBuilder();


	                for(int i = 0; i < IBAN.length(); i++){

                        char c = IBAN.charAt(i);

                        if(c >= '0' && c <= '9'){

                                numericIban.append(c);

                        }else if(c >= 'A' && c <= 'Z'){

                                int newChar = c - 'A' + 10;

                                numericIban.append(newChar);

                        }

                }

	                System.out.println(numericIban + "Iban aus zahlen");


                String ohneLaenderkennung = numericIban.substring(6,IBAN.length());

                String laenderkennungIBAN = numericIban.substring(0,4);

                String numLaenderCode = numericIban.substring(4,6);

                String ibanPruef = ohneLaenderkennung + laenderkennungIBAN + numLaenderCode;


                //String ibanPruef = ohneLaenderkennung + laenderkennungIBAN + setzeLaenderCode;

                System.out.println(ohneLaenderkennung + " ohne Länderkenneung");

                System.out.println(laenderkennungIBAN + " Länderkennung");

                System.out.println(numLaenderCode + "Ländercode");

                System.out.println(ibanPruef + "das was am ende raus kommen soll");


[B]                BigInteger ibanBigInt = new BigInteger(ibanPruef);


                pruefsumme = ibanBigInt.mod(a);

               System.out.println(pruefsumme);[/B]







				}else {

					System.out.println("Korrigieren Sie die IBAN indem Sie sie noch einmal eigeben");

					IBAN = input.readLine();

				}



			}while (schleife1 == false);

		}catch (Exception ex){

			System.out.println("Fehlerhafte Eingabe, Programm neustarten.");

		}



	}

	/*public static BigInteger toBigInteger(String ibanPruef){


		return new BigInteger(ibanPruef);

	}*/

}

Das was ich im Code Fett markiert habe funktioniert nicht so wie es soll.

Laut Wikipedia Validierung der Prüfsumme

Muss die IBAN so umgeändert werden das die Buchstaben D und E zu zahlen werden nämlich zu 13 und 14 sowie das die 13 und 14 + den Ländercode hinter die Iban angefügt werde damit mod 97 gerechnet werden kann.

Jetzt kommt bei mir aber nicht 1 raus sondern 52, ich habe zusätzlich mal die Zahl mit einem online taschenrechner überprüft und der bekommt auch 52 raus. Ich bin etwas Ratlos und wäre für einen Denkanstoß sehr dankbar.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...