Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1937 connectés 

  FORUM HardWare.fr
  Programmation
  Java

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1637800
QuiGon Gin
Posté le 06-11-2007 à 18:31:40  profilanswer
 

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

mood
Publicité
Posté le 06-11-2007 à 18:31:40  profilanswer
 

n°1637806
breizhbugs
Posté le 06-11-2007 à 19:00:47  profilanswer
 

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.

n°1638386
QuiGon Gin
Posté le 07-11-2007 à 15:52:35  profilanswer
 

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
n°1638646
breizhbugs
Posté le 07-11-2007 à 20:31:20  profilanswer
 

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. }

n°1638718
brisssou
8-/
Posté le 08-11-2007 à 08:18:43  profilanswer
 

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
n°1638724
sircam
I Like Trains
Posté le 08-11-2007 à 08:48:44  profilanswer
 

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}

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

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

 

Sujets relatifs
Comment faire un total de nombre trouver par scriptProblème de date avec macro
Problème avec l'URL Rewriting.Problème Lien sur un bouton
[debutant] java:NullPointerException[Flash AS2] Problème de preload en XML
[Débutant] Trier un tableauProblème de class et d'attribut
probleme avec ShellExecuteProbleme bordure tableau! Casse tête!
Plus de sujets relatifs à : Débutant inside : Problème de 0 à gauche dans un nombre.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR