samdeezel
Artikelen: 0
Berichten: 1
Lid geworden op: ma 28 dec 2015, 16:09

Rekeningnummer JAVA

Ik had graag een programma gemaakt dat het volgende deed:
lees het volgende IBAN BE12 3456 7890 1234
en nu kijken of het rekening nummer klopt door de 10 cijfers te delen door 97
de rest moet gelijk zijn aan het controle getal dat zijn de laatste 2 cijfers
Dit is wat ik al heb:

Code: Selecteer alles

import java.util.Scanner ;

public class RekeningNummer {
	public static void main (String[] args){
	
		System.out.println("Geef je rekeningnummer met IBAN code : "); 
		Scanner scan = new Scanner (System.in);
		int derest = scan.nextInt();
		String aantalgetallen = derest.lenght();

		if (aantalgetallen == 12) {
			String tiengetallen = (derest*0.010);
			int uitkomst == Integer.parseInt(tiengetallen)/97;
			
			if (uitkomst == derest.substring(9,11)){
				System.out.println("Dit rekeningnummer klopt!");
			}
			else {
				System.out.println("Dit is geen rekeningnummer");
			}
		}
		else {
			System.out.println("Dit is geen rekeningnummer");
		}
	}
}
Maar er zitten zoveel fouten in dat ik de kluts kwijt ben
Gebruikersavatar
WillemB
Artikelen: 0
Berichten: 654
Lid geworden op: do 20 feb 2014, 17:51

Re: Rekeningnummer JAVA

Als ik op de site van iban eu kijk ( zie hieronder) , lijkt me de berekening  anders dan jij gebruikt,
als ik het zo bekijk sla wat zaken over, tenminste ik zie ze niet terug in je programma.
 
 
Berekening:
 
1. Neem het identificatienummer.
 
Voorbeeld:
RABO 0123456789
 
2. Zet hier de landcode achter.
 
Voorbeeld:
RABO 0123456789 NL
 
3. Vervang alle letters door hun positie in het alfabet plus negen (A=10; B=11;…; Z=35)
 
Voorbeeld:
RABO 0123456789 NL wordt 2710112401234567892321
 
4. Voeg hier achteraan 00 toe.
 
Voorbeeld:
271011240123456789232100
 
5. Deel deze uitkomst door 97
 
Voorbeeld:
271011240123456789232100 / 97 = 2793930310551100919918,5567010309278351
 
6. Neem de decimalen achter de komma en vermenigvuldig dit met 97.
 
Voorbeeld:
0,5567010309278351 x 97 = 54
 
7. Trek dit getal af van 98
 
Voorbeeld:
98-54=44
 
8. Dit is het controlegetal!
 
Het IBAN nummer is dus: NL44RABO0123456789.
Sinds de uitvinding van tijd, hebben we het niet meer, en kunnen we het ook niet meer vinden.
En wie haast heeft moet langzamer lopen.
Gebruikersavatar
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

Re: Rekeningnummer JAVA

Code: Selecteer alles

int derest = scan.nextInt();
String aantalgetallen = derest.lenght();
derest is een integer, daarop kan je geen .length() uitvoeren
.length() geeft doorgaans een int terug, jij stopt dit in een String variabele

Code: Selecteer alles

if (aantalgetallen == 12) {
aantalgetallen is van type String, hoe kan dat ooit gelijk zijn aan de int 12?
Benm
Artikelen: 0
Berichten: 12.262
Lid geworden op: za 21 okt 2006, 01:23

Re: Rekeningnummer JAVA

Die lengte kun je beter negeren, dat verschilt namelijk per land. Het kan iets zijn tussen pakweg 15 en 31 karakters in totaal (incl bankcode, landcode, controlegetal etc). In nederland is het 18 waarvan 12 numeriek (2 letters NL en 4 letters banknaam).

Belangrijker is om de berekening van letters naar cijfers goed te implementeren.

Werken met delingen die floating points opleveren zoals stap 5-6-7 zoals willem beschrijft is af te raden. Gebruik gewoon de modulo operator op de integer. Floating points leveren soms arfondingsverschillen die er net voor kunnen zorgen dat je uitkomt op een getal ernaast en daardoor een IBAN onterecht afkeurt. Zeker bij delingen met 7 (of 3, 9, 11, 97 etc) krijg je repterenede decimalen waarbij dat problematisch is: '0.6666' != '0.6667' etc
Victory through technology

Terug naar “Informatica en programmeren”