Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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.

  • Autor

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.

  • Autor

Der Fehler ist gefunden:

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

dann geht es

Ausserdem wurde BufferedReader zweimal instanziert es reicht aber es nur einmal zu machen.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.