IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Do while - Condition non remplie [Débutant(e)]


Sujet :

avec Java

  1. #1
    Membre régulier
    Profil pro
    Architecte matériel
    Inscrit en
    Août 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2011
    Messages : 63
    Points : 76
    Points
    76
    Par défaut Do while - Condition non remplie
    Bonjour,


    Depuis peu je me suis mis au java ...

    et là je bloque sur mon petit script de test.

    Il consiste à demander à l'utilisateur d'entrer un email, puis de vérifier:

    - si l'utilisateur à rentré quelque chose
    - si l’émail comporte bien un '@'


    Voici mon code:

    Oui ça ne doit pas être bien codé !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    import java.util.Scanner;
     
    public class Alf {
     
    	/**
             * test de verification de chaine
             */
     
    	public static void main(String[] args) {
     
    	//mes variables
                    String em1= new String();
    		int longueur = 0;
    		int nbra;
     
     
    		//champs email
     
    			do {
    				//on utilise le package scanner pr récupérer ce que l'utilisateur a entré
    				Scanner sc1 = new Scanner(System.in);
     
    				//veuillez entrer votre email
    				System.out.println("Veuillez saisir un email :");	
     
    				//on recupère l'entrée de l'utilisateur
    				em1 = sc1.nextLine();
    				em1 = em1.toLowerCase();
     
    				//Verifier que le champ n'est pas vide:
    				//on verifie la longueur de la chaine de caractére
    				longueur = em1.length();
     
    				//On verifie que l'email contient bien un @
    				//on compte le nombre d'@ dans la chaine em1
    				nbra=(em1.split("\\@")).length - 1;	
    				//System.out.println(nbra);
     
    				}
     
    			while (longueur==0 && nbra!=1);	//'nbra!=1' n'est pas vérifié, le programme passe à l'affichage du mail
     
    				//affichage de l'email
    				System.out.println("l'email saisi est : " + em2);
     
    	}
    }
    Le nbra!=1 n'est donc pas vérifié.

    Pourriez vous me donner une piste svp ?


    Merci de m'avoir lu,

  2. #2
    Membre régulier
    Profil pro
    Architecte matériel
    Inscrit en
    Août 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2011
    Messages : 63
    Points : 76
    Points
    76
    Par défaut re
    J'ai trouvé la solution pour que ma condition soit vérifiée, j'ai remplacé le et(&&) par le ou(||).

    La condition est donc bien vérifiée mais pourquoi ne l'est elle pas avec le ET ?

  3. #3
    Membre régulier
    Homme Profil pro
    Thésard BioInformatique
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Thésard BioInformatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Points : 104
    Points
    104
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    import java.util.Scanner;
     
    public class Alf {
     
    	/**
             * test de verification de chaine
             */
     
    	public static void main(String[] args) {
     
    	//mes variables
            String em1= new String();
    		int longueur = 0;
    		int nbra = 0;
     
     
    				Scanner sc1 = new Scanner(System.in);
     
    				//veuillez entrer votre email
    				System.out.println("Veuillez saisir un email :");	
     
    				//on recupère l'entrée de l'utilisateur
    				em1 = sc1.nextLine();
    				em1 = em1.toLowerCase();
     
    				//Verifier que le champ n'est pas vide:
    				longueur = em1.length();
     
    				//on verifie la longueur de la chaine de caractére
    				//Si on a bien une chaine de caractère
    				if (longueur != 0) 
    				{
    					//On verifie que l'email contient bien un @
    					//on compte le nombre d'@ dans la chaine em1
    					nbra=(em1.split("\\@")).length - 1;	
     
    					//Si il y a le bon nombre
    					if (nbra == 1) 
    					{
    						System.out.println("l'email saisi est : " + em1);
    					}
    					else 
    					{
    						System.out.println("l'adresse est incorrect");
    					}
     
    				}
    				else 
    				{
    					System.out.println("vous n'avez rentré aucune adresse");
    				}
     
    	}
     
    }
    Tu n'as pas besoin de boucle do..while pour cet exemple. Tu peux le faire avec 2 blocs if/else pour avoir 2 vérifications (par exemple). Ou tu peux le faire avec un bloc if/else.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (longueur != 0 && nbra == 1)
    Tu as inversé dans ton code les conditions. C'est longueur différent de 0 et nbra égale à 1.

    Avec le &&, il faut que les 2 conditions soit remplies pour passer.
    Avec le ||, il suffit qu'une condition soit remplie pour passer.

  4. #4
    Membre régulier
    Profil pro
    Architecte matériel
    Inscrit en
    Août 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2011
    Messages : 63
    Points : 76
    Points
    76
    Par défaut
    Je te remercie d'avoir pris du temps pour me répondre.

    En effet je pouvais le faire avec un if...else, simplement je voulais essayer avec tous les types de conditions.

    Si on compare ton exemple avec les if ..else et mon exemple avec le do..while.

    D'une part, pourrais t on dire que l'on perd de la précision sur les conditions à anticiper avec mon exemple ?

    Ce n'est peut être qu'une impression mais je pense que le if...else permet de mieux traiter les conditions différentes qui pourraient se poser ?

    D'autre part, aurais tu une astuce pour choisir le meilleur type de boucle de façon générale ?

    J'ai pas vraiment d'expérience alors pardonnez moi pour les questions pouvant être un peu bêbête

  5. #5
    Membre régulier
    Homme Profil pro
    Thésard BioInformatique
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Thésard BioInformatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Points : 104
    Points
    104
    Par défaut
    Les boucles do...while sont des variantes des boucles while. Leur particularité réside dans le fait que la condition est testée après la première exécution de la boucle. Le code est exécuté tant que la condition est satisfaite et est exécuté au moins une fois. cf

    Pour l'imbrication des if/else, en effet ça peut permettre de mieux "gérer" les conditions si tu savoir exactement où est l'information "fausse".
    On peut faire autrement, mais si tu débutes en Java (où même en programmation), il me semble qu'il vaut mieux avoir une structure bien propre avec un logique bien carré. Et après, question optimisation/gain de temps/etc.. revoir ton code pour l'alléger.

    Pour les boucles, tout dépend du contexte où tu vas la placé. Par moment un for va suffir, alors qu'à un endroit endroit tu mettras un while (do..while, je ne l'utilise quasiment jamais). Le while est utilisé quand on ne connait pas à l'avance le nombre d'itération (il existe aussi des façons de faire avec un for (façon que je préfère)).

    Et après je pense que chacun le fait à son feeling/préférence. Certains te diront que non, pour X raison. Mais quand tu es devant ton code, tu fais comme tu le sent.

  6. #6
    Membre régulier
    Profil pro
    Architecte matériel
    Inscrit en
    Août 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2011
    Messages : 63
    Points : 76
    Points
    76
    Par défaut
    ok je saisie encore un peu mieux ...

    merci pour ta doc je vais jeté un coup d'oeil et mettre ce site en favoris.

    un grand merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Relancer msoFileDialogFolderPicker si condition non remplie
    Par Scorpdragon dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/01/2015, 14h44
  2. [XL-2007] garder setfocus sur textbox si condition non remplie
    Par cathodique dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 28/12/2014, 21h29
  3. [AC-2010] Requête retournant une liste complète malgré condition non remplie
    Par xogene dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 07/11/2014, 10h24
  4. Ignorer image si condition non remplie
    Par Gunner4902 dans le forum Langage
    Réponses: 8
    Dernier message: 09/10/2008, 10h49
  5. afficher une fenetre affichant les conditions non remplies
    Par doogybreton dans le forum VBA Access
    Réponses: 6
    Dernier message: 23/01/2008, 00h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo