Débutant inside : Problème de 0 à gauche dans un nombre. - Java - Programmation
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.
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?
Marsh Posté le 07-11-2007 à 20:31:20
QuiGon Gin a écrit : |
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 :
|
Marsh Posté le 08-11-2007 à 08:18:43
breizhbugs a écrit :
|
priceless
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? Super pour prendre de bonnes habitudes.
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 )
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