Hallo.
hat mir hierfür jemand ein Java Programm? Titel sagt alles aus
hat mir hierfür jemand ein Java Programm? Titel sagt alles aus
Hallo.
hat mir hierfür jemand ein Java Programm? Titel sagt alles aus
/**
* This method creates a valid German IBAN
* @return Account number
*/
public static String generateAccountNumber() {
String countryCode = "DE";
String gerRecognitionNumber = "131400";
String blz = "85203647";
String accountNumber = "";
String bban;
String iban;
//create a random account number
for (int i = 0; i < 10; i++) {
int random = new Random().nextInt(9);
accountNumber = accountNumber + random;
}
bban = blz + accountNumber;
String checkSumString = bban + gerRecognitionNumber;
//calculate the checksum
BigInteger checkSum = new BigInteger(checkSumString).mod(new BigInteger("97"));
//if checksum is smaller than 10 add a leading 0
if (checkSum.intValue() < 10) {
checkSumString = "0" + checkSum.toString();
} else {
checkSumString = checkSum.toString();
}
return countryCode + checkSumString + blz + accountNumber;
}
komme damit leider nicht zurecht, gibt mir nur Fehler ausDas habe ich irgendwann mal für ein Schulprojekt gemacht. Ich kann aber nicht garantieren, dass das so richtig ist.
Java:/** * This method creates a valid German IBAN * @return Account number */ public static String generateAccountNumber() { String countryCode = "DE"; String gerRecognitionNumber = "131400"; String blz = "85203647"; String accountNumber = ""; String bban; String iban; //create a random account number for (int i = 0; i < 10; i++) { int random = new Random().nextInt(9); accountNumber = accountNumber + random; } bban = blz + accountNumber; String checkSumString = bban + gerRecognitionNumber; //calculate the checksum BigInteger checkSum = new BigInteger(checkSumString).mod(new BigInteger("97")); //if checksum is smaller than 10 add a leading 0 if (checkSum.intValue() < 10) { checkSumString = "0" + checkSum.toString(); } else { checkSumString = checkSum.toString(); } return countryCode + checkSumString + blz + accountNumber; }
public class IBAN {
public static void main (String [] args) {
}
public static String generateAccountNumber() {
String countryCode = "DE";
String gerRecognitionNumber = "131400";
String blz = "85203647";
String accountNumber = "";
String bban;
String iban;
//create a random account number
for (int i = 0; i < 10; i++) {
int random = new Random().nextInt(9);
accountNumber = accountNumber + random;
}
bban = blz + accountNumber;
String checkSumString = bban + gerRecognitionNumber;
//calculate the checksum
BigInteger checkSum = new BigInteger(checkSumString).mod(new BigInteger("97"));
//if checksum is smaller than 10 add a leading 0
if (checkSum.intValue() < 10) {
checkSumString = "0" + checkSum.toString();
} else {
checkSumString = checkSum.toString();
}
return countryCode + checkSumString + blz + accountNumber;
}
}
Wie schon in einem anderen Forumbeitrag geschrieben, ich fange gerade an mich für das Studium vorzubereiten und habe nicht wirklich einen Plan"Bekomme da irgendwie gar nichts"
Was steht denn in deiner main-Methode? Was macht die denn?
Nebenbei was Unwichtiges: Initialisierre "new Random()." nur einmal außerhalb der Schleife und greife wiederholt darauf zu.
import java.math.BigInteger;
public class IBAN {
public static void main(String[] args) {
String r = args[0]; // Bankleitzahl
String s = args[1]; // Kontonummer, auf 10 Ziffern erweitern
while (s.length()<10) {
s = "0"+s;
}
BigInteger x = new BigInteger(""+r+s+"131400");
BigInteger z = new BigInteger("97");
x = x.mod(z);
int y = 98-x.intValue(); // evtl. um führende 0 ergänzen
System.out.println ("DE"+y+r+s);
}
}
Dann besorg dir ein gutes Java-Buch und fange von vorne an und nicht mit beliebigen Aufgaben, die du anscheinend noch gar nicht lösen kannst.ich fange gerade an mich für das Studium vorzubereiten und habe nicht wirklich einen Plan
import java.math.BigInteger;
import java.util.Scanner;
public class IBAN {
public static void main(String[] args) {
String Kontonummer;
String BLZ;
Scanner input = new Scanner(System.in);
System.out.print("Kontonummer: ");
Kontonummer = input.nextLine();
System.out.print("BLZ: ");
BLZ = input.nextLine();
// Zusammensetzung Ziffern
String Laendercodedeutschland = "131400";
String ibangrundlage = BLZ + Kontonummer + Laendercodedeutschland;
//berechnung1
String berechnung1 = "";
String berechnung2 = "";
String berechnung3 = "";
String berechnung4 = "";
String berechnung5 = "";
//Unterteilung der BLZ und Kontonummer
for(int i =0; i<ibangrundlage.length();i++){
if(i<=8){
berechnung1 += ibangrundlage.charAt(i);
} else if(i>8 && i<=15){
berechnung2 += ibangrundlage.charAt(i);
} else if(i>15 && i<=22){
berechnung3 += ibangrundlage.charAt(i);
} else if(i>22){
berechnung4 += ibangrundlage.charAt(i);
}
}
berechnung2 = berechnezwischenziffer(berechnung1 )+ berechnung2;
berechnung3 = berechnezwischenziffer(berechnung2 )+ berechnung3;
berechnung4 = berechnezwischenziffer(berechnung3 )+ berechnung4;
berechnung5 = berechnezwischenziffer(berechnung4);
int endergebnis = 98 - Integer.parseInt(berechnung5);
String prüfziffer = String.valueOf(endergebnis);
String iban = "DE" + prüfziffer + BLZ + Kontonummer ; //iban ausgabe
System.out.println("IBAN: "+ iban);
}
//methode zur Berechnung der zwischenziffern zur Ermittlung der Prüfziffer
public static String berechnezwischenziffer(String berechnungssumme) {
int berechnungsumme = Integer.parseInt(berechnungssumme);
int vergleichssumme = berechnungsumme;
berechnungsumme /= 97;
berechnungsumme *= 97;
int differenz = vergleichssumme - berechnungsumme;
if (differenz<10){
differenz = Integer.parseInt("0") + differenz;
}
String differenzsumme= String.valueOf(differenz);
return differenzsumme;
}
}
Zu 1. Nen.Java:import java.math.BigInteger; import java.util.Scanner; public class IBAN { public static void main(String[] args) { String Kontonummer; String BLZ; Scanner input = new Scanner(System.in); System.out.print("Kontonummer: "); Kontonummer = input.nextLine(); System.out.print("BLZ: "); BLZ = input.nextLine(); // Zusammensetzung Ziffern String Laendercodedeutschland = "131400"; String ibangrundlage = BLZ + Kontonummer + Laendercodedeutschland; //berechnung1 String berechnung1 = ""; String berechnung2 = ""; String berechnung3 = ""; String berechnung4 = ""; String berechnung5 = ""; //Unterteilung der BLZ und Kontonummer for(int i =0; i<ibangrundlage.length();i++){ if(i<=8){ berechnung1 += ibangrundlage.charAt(i); } else if(i>8 && i<=15){ berechnung2 += ibangrundlage.charAt(i); } else if(i>15 && i<=22){ berechnung3 += ibangrundlage.charAt(i); } else if(i>22){ berechnung4 += ibangrundlage.charAt(i); } } berechnung2 = berechnezwischenziffer(berechnung1 )+ berechnung2; berechnung3 = berechnezwischenziffer(berechnung2 )+ berechnung3; berechnung4 = berechnezwischenziffer(berechnung3 )+ berechnung4; berechnung5 = berechnezwischenziffer(berechnung4); int endergebnis = 98 - Integer.parseInt(berechnung5); String prüfziffer = String.valueOf(endergebnis); String iban = "DE" + prüfziffer + BLZ + Kontonummer ; //iban ausgabe System.out.println("IBAN: "+ iban); } //methode zur Berechnung der zwischenziffern zur Ermittlung der Prüfziffer public static String berechnezwischenziffer(String berechnungssumme) { int berechnungsumme = Integer.parseInt(berechnungssumme); int vergleichssumme = berechnungsumme; berechnungsumme /= 97; berechnungsumme *= 97; int differenz = vergleichssumme - berechnungsumme; if (differenz<10){ differenz = Integer.parseInt("0") + differenz; } String differenzsumme= String.valueOf(differenz); return differenzsumme; } }
So, ich hab nur noch zwei Fragen.
1. Die IBAN wird falsch berechnet.. Kann mir das einer erklären und den Fehler zeigen?
2. Wie schaffe ich es, dass bei der IBAN nach allen 4 Ziffern eine Leerzeile kommt?
int vergleichssumme = berechnungsumme;
berechnungsumme /= 97;
berechnungsumme *= 97;
int differenz = vergleichssumme - berechnungsumme;
if (differenz<10){
differenz = Integer.parseInt("0") + differenz;
}
String ibangrundlage = BLZ + Kontonummer + Laendercodedeutschland;
import java.math.BigInteger;
public class Iban {
public static String convertToIban(String konto, String blz) {
while (konto.length() < 10) {
konto = "0" + konto;
}
String bban = blz + konto;
String prof1 = bban + "131400";
BigInteger prof2 = BigInteger.ZERO;
for (char i : prof1.toCharArray()) {
prof2 = prof2.multiply(BigInteger.TEN);
prof2 = prof2.add(BigInteger.valueOf(i - '0'));
}
prof2 = prof2.mod(BigInteger.valueOf(97));
int prof3 = 98 - prof2.intValue();
String iban = "DE" + String.format("%02d", prof3) + bban;
System.out.println(konto);
System.out.println(blz);
System.out.println(prof1);
System.out.println(prof2);
System.out.println(prof3);
return iban;
}
public static void main(String[] args) {
System.out.println(convertToIban("4444333322", "88866655"));
System.out.println(convertToIban("1234567890", "10000000"));
System.out.println(convertToIban("9999999999", "99999999"));
}
}
public static String berechnezwischenziffer(String berechnungssumme) {
return "" + (Integer.parseInt(berechnungssumme) % 97);
}
String prüfziffer = (endergebnis < 10 ? "0" : "") + endergebnis;
public static String convertToIban(String bankCode, String accountNumber) {
String paddedAccount = String.format("%10s", accountNumber).replace(' ', '0');
String bban = bankCode + paddedAccount;
String checksum = checksum(bban + "131400");
return "DE" + checksum + bban;
}
private static String checksum(String string) {
int checksum = 0;
for (char digit : string.toCharArray()) {
checksum = (10*checksum + Character.digit(digit, 10)) % 97;
}
return String.format("%02d", 98 - checksum);
}
% 97
einer 24stelligen Zahl kann doch sogar meine Oma rechnen. 😂Im Kopf!Ach kommt schon,% 97
einer 24stelligen Zahl kann doch sogar meine Oma rechnen. 😂
Das Problem ist doch, dass alte Leute damit nicht mehr zurechtkommen. Früher konnten sie sich problemlos eine Kontonummer und Bankleitzahl merken. Heute müssen sie eine 18stellige Zahl + Länderkennung + aberwitzige Prüfsumme aufschreiben, und "am Schalter" gibt es auch keine Bedingung mehr. Für viele gerät damit die Welt aus den Fugen.Im Kopf!
Ich würde alle Lösungen mit BigInteger sogar als falsch bezeichnen. Kontonummer und BLZ sind halt einfach keine Zahlen, genauso wenig wie Telefonnummern und PLZs...Diese BigInteger Ansätze braucht es doch gar nicht. Der Ansatz, da einfach den String zu unterteilen und in mehreren Schritten zu rechnen, ist doch bereits in Ordnung.
Das ist so falsch. Die IBAN ersteht aus 2 Zeichen Länderkennzeichen, 2 Zeichen Prüfnummer und dann BLZ und Kontonummer.Sorry, es gibt keine einfache Lösung von Kontonummer und Bankleitzahl auf die Iban zu schließen.