1 van 1

Rekeningnummer JAVA

Geplaatst: ma 28 dec 2015, 16:30
door samdeezel
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

Re: Rekeningnummer JAVA

Geplaatst: ma 28 dec 2015, 17:59
door WillemB
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.

Re: Rekeningnummer JAVA

Geplaatst: ma 28 dec 2015, 18:07
door Xenion

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?

Re: Rekeningnummer JAVA

Geplaatst: di 29 dec 2015, 02:24
door Benm
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