Longueur d'une chaine en java????? [Fermé]

Signaler
Messages postés
294
Date d'inscription
mercredi 5 novembre 2008
Statut
Membre
Dernière intervention
3 mai 2010
-
Messages postés
9366
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
-
Bonsoir ,

je veux savoir la longueur d'une chaine donnée pour pouvoir faire des test dessus par exemple :

System.out.println("Entrer la matricule");
int id=Clavier.lireInt();
if(id==0){System.out.println("Veuillez entrer une Matricule !SVP");}
else {E1.NumMatricule=id;}



---->> ici je veux faire un test sur le 'id' que l'utilisateur a entrez s'il est > à 8 (càd id>8) dans ce cas j'affiche un message d'erreur, mais comment savoir la longueur de la chaine entrez ??

8 réponses

Messages postés
793
Date d'inscription
vendredi 20 octobre 2006
Statut
Contributeur
Dernière intervention
4 septembre 2011
156
Non mais je rêve ou quoi ...

Soyons un peu pragmatique ... Si on veut que le nombre (en int) contienne moins de 9 caractères, c'est qu'il en possède entre 1 et 8 : il est donc contenu entre 1 (puisque pas 0) et 99999999.

if( id > 99999999 ) 
    System.err.println("erreur"); 
else 
    System.out.println("ok");


Quand on dit "longueur", il ne faut pas penser tout de suite à "length()" :D
6
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
369
Salut,
je pense que le probleme vient de id...Il vaut mieux le lire comme une chaine de caractere, puis le traiter comme un nombre par la suite:
public static void main(String[] args) throws IOException { 
       int ident=0; 
       BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)); 
       System.out.println("Entrer la matricule"); 
       String id = reader.readLine(); 
       if (id.length()>9) 
           System.out.println("Erreur longueur de "+id.length()+" ne peux depasser 9 char"); 
       else 
       { 
           if (id.length()==0) 
               System.out.println("Ne peux etre à 0"); 
           else 
              ident=Integer.parseInt(id); 
       } 
       System.out.println("Identifiant:"+ident); 
    } 

Ce n'est pas parce que certaines choses semblent inexplicables, qu'il faut faire semblant de les expliquer!
Messages postés
671
Date d'inscription
mardi 6 mars 2007
Statut
Membre
Dernière intervention
25 janvier 2011
282
Je suppose qu'il faut utiliser length()
qui compte le nb de caracteres

--
Messages postés
294
Date d'inscription
mercredi 5 novembre 2008
Statut
Membre
Dernière intervention
3 mai 2010
3
Merci de m'avoir répondue :)

oui je l'ai essayé sauf que j'ai tjs une erreur :

if(id.lenght()!=8)
{
System.out.println("Attention la Matricule ne doit pas contenir plus que 8 chiffres !!");
}
else {Agent.NumMatricule=id;}
Messages postés
671
Date d'inscription
mardi 6 mars 2007
Statut
Membre
Dernière intervention
25 janvier 2011
282
Si la matricule ne doit pas contenir plus que 8 chiffres ce serait pas plutot ça :

if(id.lenght()<9)
--
Messages postés
294
Date d'inscription
mercredi 5 novembre 2008
Statut
Membre
Dernière intervention
3 mai 2010
3
bein ca ne marche ps :

j'ai encore ce msg d'erreur :

"cannot invoke lenght() on the primitive type int"
Messages postés
9366
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 270
Chukka, c'est plus fort que toi !!!

En effet sur un int tu ne pourras que faire une comparaison de nombre, et pas sur la taille de l'entier.

Messages postés
9366
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 270
Tu fais aussi une comparaison de nombre, et pas sur une taille potentielle.

Tu fais pas if(int i.length<9) par exemple.

Donc je persiste c'est une comparaison de nombre qui marche tout à fait cela dit comme tu l'as exposé.