Débutant inside : Problème de 0 à gauche dans un nombre.

Débutant inside : Problème de 0 à gauche dans un nombre. - Java - Programmation

Marsh Posté le 06-11-2007 à 18:31:40    

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 :p)
 
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 :(

Reply

Marsh Posté le 06-11-2007 à 18:31:40   

Reply

Marsh Posté le 06-11-2007 à 19:00:47    

Ben je dirais que tu devrais d'abord lire le nombre en "string" et decouper ton string en 2 pour en extraire le premier nombre et le reste
alors que la tu lis le nombre en long puis tu le convertis en string.
Sinon tu devrais organiser ton programme mieux que ca:
une methode pour la saisie du code, une méthode pour le controle du code et une méthode pour le calcul du resultat.

Reply

Marsh Posté le 07-11-2007 à 15:52:35    

Effectivement, en lisant en String et puis en repassant en long, ca tourne niquel :) Un grand merci  
 
Sinon, qu'entends-tu par organiser par méthodes?

Message cité 1 fois
Message édité par QuiGon Gin le 07-11-2007 à 15:52:57
Reply

Marsh Posté le 07-11-2007 à 20:31:20    

QuiGon Gin a écrit :


Sinon, qu'entends-tu par organiser par méthodes?


Doisons que mettre tout le code dans le main, c'est pas tres lisible pour celui qui va relire ton programme
 
ton main devrait ressembler a un truc plus organisé

Code :
  1. public static void main(String[] args)
  2. {
  3.    initialisation();
  4.    lectureDuNumero();
  5.    if (numeroValide() == true
  6.    {
  7.      // Afficher que le numero est valide
  8.    }
  9. }

Reply

Marsh Posté le 08-11-2007 à 08:18:43    

breizhbugs a écrit :


Code :
  1. (...)
  2.    if (numeroValide() == true
  3. (...)



 
priceless
 
 [:cupra]  


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 08-11-2007 à 08:48:44    

QuiGon Gin a écrit :

Etant étudiant en 1ère année d'un graduat en Info, je commence seulement le java sous Eclipse.


OMG, Java + Eclipse en 1ère année 2 mois après la rentrée? [:mlc] Super pour prendre de bonnes habitudes. [:bien]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed