Bonsoir
Etant étudiant en 1ère année d'un graduat en Info, je commence seulement le java sous Eclipse.
Lors de mon dernier cours qui remonte à cette après-midi, mon prof me demande de créer un petit programme pouvant vérifier si un N° de compte en banque en Belgique est correct.
Je me met donc à la tache, programme niquel (avec un n° normal genre le mien), et la, le prof me pose une colle :
On prend un n° de compte d'une association genre Cap48 (000-0000037-37) qui est un n° correct, et la mon programme me met une erreur en me sortant que le n° n'est pas correct.
Je trifouille mon esprit et la, je remarque qu'en fait, lorsque je lis le N° de compte pr vérifier l'exactitude, il ne considère pas les 0 à gauche et donc pense que le n° de compte est 37 37 :-/
Comment puis-je faire pour que mon programme les considère donc?
(J'ai essayé d'effectuer quelques recherches sur le net et sur le fofo, mais n'ayant pas trop d'idée de nom pr ma recherche, celle ci n'as pas été concluante).
Petite précision : Pour voir si un numéro de compte est correct, on prend les 10 premier chiffre, on effectue le modulo de ce nombre par 97, si si il est correcte, le reste qu'on obtient est égal au 2 dernier nombre du N° de base.
Voici mon code (j'suis en apprentissage, ne me linchez pas )
package exosupplémentairecompte;
import java.util.*;
public class CompteEnBanque {
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
String sNumeroCompte; // N° en string pour vérifier la longeur
long lNumeroCompte,lNumeroDiv,lreste; // N° en long pour pouvoir lire, le N°divisé par 10 et le reste de la division.
int iTailleNum,i=0; // Taille du N° du compte et variable i
System.out.println(" BIENVENUE !" );
System.out.println(" °°°°°°°°°°°" );
System.out.println("Ce programme vérifie si le numéro de compte en banque encodé est correct. \n" );
System.out.print("Veuillez entre le N° du compte : " );
lNumeroCompte=sc.nextLong(); //lecture du N°de compte
sNumeroCompte=Long.toString(lNumeroCompte); // passage en String
iTailleNum = sNumeroCompte.length(); // vérification si bien 12 caractères.
lNumeroDiv = lNumeroCompte/100; // division du n° par 10 afin d'obtenir le reste
lreste = lNumeroCompte-(lNumeroDiv*100); // Soustraction du n° de base avec le nouveau n° pr obtenir le reste
while (i!=1)
{
if (iTailleNum!=12)
{
System.out.print("Votre n° de compte est erronné, veuillez le réencoder : " );
lNumeroCompte=sc.nextLong(); //lecture du N°de compte
sNumeroCompte=Long.toString(lNumeroCompte); // passage en String
iTailleNum = sNumeroCompte.length(); // on compte le nombre de caracteres.
lNumeroDiv = lNumeroCompte/100; // division du n° par 10 afin d'obtenir le reste
lreste = lNumeroCompte-(lNumeroDiv*100); // Soustraction du n° de base avec le nouveau n° pr obtenir le reste
}
if (iTailleNum ==12)
{
if (lNumeroDiv%97==lreste) // vérif afin de savoir si le modulo des 10 premier chiffre vaut bien les 2 derniers.
{
System.out.print("Votre n° de compte est correct" );
i++;
}
else
{
System.out.print("Votre n° de compte est erronné, veuillez le réencoder : " );
lNumeroCompte=sc.nextLong(); //lecture du N°de compte
sNumeroCompte=Long.toString(lNumeroCompte); // passage en String
iTailleNum = sNumeroCompte.length(); // vérification si bien 12 caractères.
lNumeroDiv = lNumeroCompte/100; // division du n° par 10 afin d'obtenir le reste
lreste = lNumeroCompte-(lNumeroDiv*100); // Soustraction du n° de base avec le nouveau n° pr obtenir le reste
}
}
}
}
}
Qd on lance le programme et qu'on entre un n° banal mais correct (donc sans 0 a gauche) le prog fonctionne, mais au moindre 0 a gauche, bim, ca ne marche plus