La taille d'un INT

fandezizou Messages postés 16 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 28 septembre 2006 - 25 sept. 2006 à 20:41
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 - 29 sept. 2006 à 19:52
Bonjour,
J'ai un petit problème de députant. J'ai besoin de votre aide comme toujours. Ma route est longue
J'arrive pas à savoir le nombre de chiffres saisit un utilisateur. J'avais ça mais j'avais oublié de tenir compte de quelque chose :

while(quotient<=0)   
                  {
                          System.out.print("\nEntrer le numéro de l'ouvrage (un nombre de 5 chiffres) :\t");
                          C=Clavier.lireInt();
                          quotient=C/10000; // on divise par 10000 pour trouver le premier  chiffre 
                          System.out.println("");
                      }

le problème c'est que si l'utilisateur saisie "456666666" ça marchera alors que je veux ke 5 chiffrers.
et si je fait ((quotien <=0) || (quotien >10)) ça marchera pas si on saisi un chiffre qui commence par 0. "01234" = 5 chiffres mais ne rentrent pas dans l'intervalle.
Je ne sais pas quoi faire et j'ai besoin de votre aide....
Mais je suis vraiment un débutant.
Meci beaucoup.

8 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
25 sept. 2006 à 21:09
Fait plutôt un LireString et teste la longueur du string, et enfin, parse le en Integer, ce qui donne :
C=Clavier.lireString();
if (C.length() == 5) {
    Integer result = Integer.parseInteger(C);
}
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
25 sept. 2006 à 21:55
Salut :

La solution de
DARKSIDIOUS
 donne le bon résultat, mais je vois une faute de frappe.



String C = Clavier.lireString ();
if (C.length () == 5) {
   int entier = Integer.parseInt (C);
}

Un entier avec 5 chiffres est compris entre 0 et 99999 donc une simple comparaison suffira.

int C = Clavier.lireInt ();
if (C>=0 && C<=99999) {
   //...
}
else {
   //...
}
0
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
26 sept. 2006 à 10:39
tu devrais valider la réponse de darksidious
également as tu fais gaffe à si l utilisateur rentre des lettres a la place de chiffes ca donne quoi ??
++ Toinou
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
26 sept. 2006 à 13:38
Salut :

On ne dois pas se préoccuper du cas où l'utilisateur tappe des lettres en effet ceci doit être l'affaire de la méthode lireInt () de la classe Clavier qui devra normalement levé une exception pour signaler qu'il est impossible de convertir une chaîne entier.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
26 sept. 2006 à 21:50
Salut :

A propos de la solution de DARKSIDIOUS  si on choisie une chaine avec 5 chiffres mais avec des espaces on va avoir des résultats erronées.

Donc on doit convertir notre chaîne en entier puis on teste s'il est de 5 chiffres
(compris entre 0 et 99999).

 
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
26 sept. 2006 à 22:02
D'où le parseInt...
0
fandezizou Messages postés 16 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 28 septembre 2006
28 sept. 2006 à 22:48
Oui j'approuve votre idée mais imaginons que l'utilisateur saisit "00145" qui est un nombre de 5 chiffres en le convertissant en String et le reconvertir en Int les 0 disparait.
mais la conversion en string garde les deux 0 donc c'est magique.
Bref il y'a un point super_toinou a remarqué c si l'utilisateur saisit des chaine de caractéres, on se fera avoir dans ce cas....
Mais j'approve tout ce que vous m'avez dis j'apprend j'apprend...vous me donner des notions et je remercie.
0
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
29 sept. 2006 à 19:52
   alors j te sors un code rapidos comme ca
String c = Clavier.lireString();
//si l utilisateur a saisi qque chose sur 5 caractères
if((c!=null)&&(c.length()==5)){
  //si c est bien un chiffre (accepte 00125)
  if(c.matches("^[0-9]*")){
     int entier = Integer.parseInt (C);
      et t es tranquile
  }
}
++ Toinou
0
Rejoignez-nous