Discussion: Demande de deblocage

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maldives

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2017
    Messages : 8
    Points : 2
    Points
    2

    Par défaut Demande de deblocage

    Bonjour,

    Je suis debutant en Java. Je suis des cours a distance et malheureusment certains exercices de caodag en Java me bloquent et je ne trouve pas comment m'y mettreny par pou commencer. Vous verrez tout en bas apres l'enonce et les affichages possibles une partie du code que j'ai effectuee.

    La situation est la suivante :

    1. J'ai une methode static booleen :

    public static boolean continuer (String msgInvite)





    Voulez-vous traiter des combinaisons de codes postaux et de numeros civiques (oui / non) ? o


    Le code partiel :

    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
    public static boolean continuer (String msgInvite){
            boolean continuer;
            continuer = true;
            String reponse;
     
            int strlen;
     
            reponse = "oui";
            strlen= reponse.length();
            if(strlen > 3) {
                System.out.println ("ERREUR! La reponse doit etre oui, non , o ou n !");
                reponse = Clavier.lireString();
            }
            if(strlen == 2) {
                System.out.println ("ERREUR! La reponse doit etre oui, non , o ou n !");
                reponse = Clavier.lireString();
            }
     
            return continuer;
    Merci pour votre aide.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    11 257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 11 257
    Points : 19 062
    Points
    19 062

    Par défaut

    Hello,

    et donc, peux-tu décrire où tu te sens un peu perdu, et quelle est ta question au juste ?

    Avec ce que tu nous écris là, c'est un peu comme si tu pensais qu'on allait faire l'exercice à ta place, ce qui n'a pas franchement d'intérêt, n'est-ce pas ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maldives

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2017
    Messages : 8
    Points : 2
    Points
    2

    Par défaut

    Bonjour Telvin,

    Cela fait deux mois que je debute en Java. Et c'est la premiere fois que je me vois confronter a faire une methode statique booleenne qui sera ensuite appelee dans le main.

    Je sais que je dois inserer dans cette methode deux String oui et non tels que :

    1. le length des deux String doit etre 3 ou 1 mais pas 2 et pas plus de 3. sinon ca affiche le message d'erreur tant que je ne respecte pas les conditions emises pour ces deux String.
    2. Miniuscule ou Majuscule n'as pas d'importance.
    3. a la fin de cette methode je dois avoir un return continuer.

    Ca a l'air simple. Mais je ne sais pas par ou commencer, quoi declarer/initialiser et comment affecter les methodes d'instances de la classe String dans ce cas.

    Je ne vous demande pas de me faire l'exercice car je ne vois l'interet pour moi. Je demande juste des trucs et astuces sur comment aller d'un texte vers du code Java. Si ce n'etait q'un avec un string ou Char je saurais le faire. mais j'ai le oui et non et un retour continuer et le sacre booleen.

    Par ailleurs, ceci est la continuation de mon exercice dont voici ma premiere methode:

    Code JAVA : 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
     public static int saisieEtValideNoCivique (String invite, int min, int max){
     
            int noCiviqueValide =1;
     
            noCiviqueValide = Clavier.lireInt();
     
            do  {
                System.out.println ("ERREUR! Le numero doit etre entre 1 et" + 
                    "9999 inclusivement.");
                noCiviqueValide = Clavier.lireInt();
     
            } while (noCiviqueValide < 1 || noCiviqueValide > 9999);
            return noCiviqueValide;
        }
     
    public static void main (String[] params) {
            int noCiviqueValide = saisieEtValiderNoCivique("Entrez un numero" +
                    "civique pour la PREMIERE adresse : ", 1, 9999);
     
     
    (.....)
     
     
     
        } 
     
    // main

    Je vous remercie.

    Amities

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java/Eclipse RCP
    Inscrit en
    septembre 2009
    Messages
    10 399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java/Eclipse RCP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 10 399
    Points : 24 920
    Points
    24 920
    Billets dans le blog
    2

    Par défaut

    Salut,

    Je ne sais pas pourquoi tu parles de longueur de chaînes à 3, ou 1 et pas 2, alors que je ne vois rien à ce propos dans le sujet que tu montres. Il ne s'agit que de demander à l'utilisateur de saisir un mot et que si ce mot, en ignorant la casse, ne fait pas partie d'une liste donnée ("oui", "non", "o", "n") alors on lui redemande. Autrement dit, redemander la saisie tant qu'une condition n'est pas validée, soit en gros :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String saisie;
    do {
        /* affichage éventuel de l'invite */
        saisie = /* appel de la méthode pour récupérer la saisie d'une chaîne, ou d'un mot, au clavier */
    } while ( !estValide(saisie) ); // ou while ( nestPasValide(saisie) ) si tu préfères dans ce sens
    estValide étant une fonction qui répond true si saisie, quelque soit la casse, est soit "oui", soit "non", soit "o", soit "n". Ce n'est pas plus compliqué que ça pour le principe. Avec une invite, ça peut être un peu compliqué si on veut afficher une invite différente la première fois des autres (genre en cas de redemande, on affiche en plus de l'invite un message qui dit que la dernière réponse n'est pas acceptée).

    A toi maintenant de réfléchir à la réalisation de estValide().
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    11 257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 11 257
    Points : 19 062
    Points
    19 062

    Par défaut

    Bon je vois surtout qu'il y a un genre de confusion générale devant le manque d'habitude de manipuler des String.
    Je te suggères de commencer par des exercices plus simples :

    Exercice 1: une méthode static sans return et sans paramètre,
    qui demande 5 fois à l'utilisateur de taper un mot, et qui à chaque fois affiche "Vous avez tapé le mot : " suivi du mot tapé.

    Exercice 2: une méthode static boolean qui prend un paramètre String,
    elle renvoie true si la String correspond à "Bonjour" et false sinon.
    Afficher la String passée en paramètre, et le résultat obtenu en booléen.


    Mais je vois aussi que tu as du mal à passer d'un exercice où on lit un nombre au clavier et on retourne un nombre, et ensuite un exercice où on lit une String au clavier et on retourne un booléen.
    Dans ton précédent exercice tu lisais un nombre, puis tu décidais s'il est accepté ou pas, et si oui tu en fais un return, tel que tu l'as lu.
    Alors que dans ce nouvel exercice tu lis une String, et tu dois renvoyer un booléen. A un moment donné tu as besoin de convertir ta String en un booléen, avant de faire return de ce booléen. C'est une étape que tu n'avais pas avant.

    Cette conversion est simple en principe : est-ce que cette String représente "oui" (c'est à dire oui en entier ou juste un "o") ? Alors le booléen est true. Sinon, alors le booléen est false (parce que c'est soit l'un soit l'autre. Si c'est pas oui c'est non.)
    Mais bien sûr cela s'ajoute à la vérification de validité de la String : est-ce que la String est l'un des 4 choix acceptables ? Si oui, c'est valide. Si elle n'est pas l'un des 4 choix possibles, elle n'est pas valide et il faut en redemander une.
    La validité tu savais déjà faire ça avec l'exercice précédent. Ça n'a pas changé. Tu as une String, tu vérifies si elles est acceptable ou pas, si elle ne l'est pas tu affiches l'erreur et tu recommences. C'est comme avant.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maldives

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2017
    Messages : 8
    Points : 2
    Points
    2

    Par défaut

    On n'a pas trop de documentation dans une ile !!!! Je vois bien ce que vous m'expliquer. Pour les deux exos de Telvin, j'ai reussi.

    Ca reste encore confus pour mon exo. Mais je tente comme meme. Je sais que le code ci-dessous est du n'importe quoi et il serait plus beau si je n'essaie pas de le faire !!!!. Pire, BlueJ m'informe qu'il y a des erreurs mais ne l'indique pas ou !!!!

    M'enfin, here we go :

    Code JAVA : 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
    public static boolean continuer (String msgInvite){
            String saisie;
     
            boolean estValide;
            estValide = true;
     
            saisie = Clavier.lireString();
     
            do {
                if (saisie != "oui" || saisie != "non" || saisie != "o" ||   
                saisie != "n") {
                    System.out.println ( "ERREUR! La reponse doit etre oui, " 
                                            + "non , o ou n ! " );
                    estValide = false ;             
     
                }
     
            } while (!estValide(saisie) ); 
            return estValide;
        }

    Et :
    Comment convertir une String en un booléen
    Comment l'appeler dans le main !!! C'est different que celui des methodes de nombres

    Merci

  7. #7
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    août 2005
    Messages
    5 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : août 2005
    Messages : 5 730
    Points : 20 318
    Points
    20 318
    Billets dans le blog
    31

    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (saisie != "oui" || saisie != "non" || saisie != "o" ||  saisie != "n") {
    Pas tout a fait, tu ne dois pas tester l’égalité des string avec != (ou même ==) mais en invoquant la méthode equals(). En effet les strings sont des objets et le test d’égalité va tester si la référence contenue dans les variables est identique plutôt que le contenu même de la chaîne de texte. Ce test ne va donc pas généralement te renvoyer le résultat que tu espères.

    Il te faut donc par exemple faire !"oui".equals(saisie) ou !saisie.equals("oui"). La seconde expression est similaire a la 1ere mais peut dans un cas plus général provoquer une NullPointerException si la variable est a la valeur null (si Clavier.lireString() returne null par exemple) .

    Ensuite, il est possible que l'utilisateur saisisse les valeurs "oui", "OUI", "Oui, "OUi", etc. donc dans ce cas le test ne donnera pas forcement le bon resultat. Il est donc possible de contourner le problème de la case (le fait qu'un caractère puisse être en majuscule ou minuscule) en invoquant la méthode spécifique aux strings equalsIgnoreCase() ou en convertissant la chaine a tester en minuscules en invoquant toLowerCase(), par exemple en faisant !"oui".equalsIgnoreCase(saisie) ou !"oui".equals(saisie.toLowerCase()) ou !saisie.compareIgnoreCase("oui") ou encore !saisie.toLowerCase().equals("oui").

    N'oublie pas que tu peux visiter la Java sur Développez mais aussi lire pas mal de cours dont certains sont orientes pour les débutants (ou même les enfants ce qui le rend encore plus abordables pour les débutants).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  8. #8
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maldives

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2017
    Messages : 8
    Points : 2
    Points
    2

    Par défaut

    Salut Bouye,

    Voila ce que j'ai pu faire. Cependant l'infameux !estValide(saisie) me pose probleme.

    Merci.


    Code JAVA : 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
    public static boolean continuer (String msgInvite){
            String saisie;
     
            boolean estValide;
            estValide = true;
     
            System.out.println(msgInvite); 
     
     
            saisie.equalsIgnoreCase("oui");
            saisie.equalsIgnoreCase("non");
            saisie.equalsIgnoreCase("o");
            saisie.equalsIgnoreCase("n");
     
            do {
                saisie = Clavier.lireString();
     
     
     
                if(!"oui".equals(saisie) || !"non".equals(saisie) || !"o".equals(saisie) || !"n".equals(saisie)) {
                System.out.println ("ERREUR! La reponse doit etre oui, non , o ou n ! " );
     
     
     
                }
     
            } while (!estValide(saisie) );

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java/Eclipse RCP
    Inscrit en
    septembre 2009
    Messages
    10 399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java/Eclipse RCP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 10 399
    Points : 24 920
    Points
    24 920
    Billets dans le blog
    2

    Par défaut

    Citation Envoyé par dmayorie Voir le message
    Salut Bouye,

    Cependant l'infameux !estValide(saisie) me pose probleme.
    Ah oui ? Lequel (ou lesquels) ?

    Utiliser ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    saisie.equalsIgnoreCase("oui");
    tout seul comme ça ne sert à rien. equalsIgnoreCase est une méthode qui retourne une valeur booléenne. Si tu n'exploites pas cette valeur, ça ne sert à rien.


    Attention avec les expressions booléennes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!"oui".equals(saisie) || !"non".equals(saisie) || !"o".equals(saisie) || !"n".equals(saisie)) {

    Simplifions en if(!"oui".equals(saisie) || !"non".equals(saisie) ) {.

    Supposons que la saisie soit "oui".

    si saisie est égale à oui, alors "oui".equals(saisie) est vrai, donc !"oui".equals(saisie) est faux, tu es d'accord jusque là ?
    si saisie est égale à oui, alors "non".equals(saisie) est faux, donc !"non".equals(saisie) est vrai, tu es d'accord jusque là ?

    En algèbre booléenne, vrai ou faux = faux ou vrai = vrai (pour un ou, il suffit qu'un terme au moins soit vrai pour que l'expression le soit).

    Donc si le test précédent est vrai tu affiches une erreur (en revanche, je ne sais pas d'où tu sors cette histoire de code postal). Il l'est, vrai, puis que la deuxième condition l'est. Donc, malgré que la saisie soit correcte, tu affiches qu'il y a une erreur...

    En l’occurrence, estValide() c'était un nom que j'avais donné à la condition, en utilisant la syntaxe des méthodes, comme pour te suggérer de faire une méthode qui teste si le mot saisit fait partie des choix valides, qu'il suffit ensuite d'inverser pour savoir si le choix n'est pas valide.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  10. #10
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maldives

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2017
    Messages : 8
    Points : 2
    Points
    2

    Par défaut

    Citation Envoyé par dmayorie Voir le message
    Salut Bouye,

    Cependant l'infameux !estValide(saisie) me pose probleme.

    Ah oui ? Lequel (ou lesquels) ?
    la fin du do while il est mentionne "(!estValide(saisie) );" et le compilateur m'affiche une erreur.


    Donc ce que tu me dis : au lieu de faire des comparaisons d'injonction, il serait mieux de faire des if et else if ou encore des if pour chaque cas.

    A/s du message de code postal, c'etait une erreur de copiage.... oups !!!

    Merci.

  11. #11
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java/Eclipse RCP
    Inscrit en
    septembre 2009
    Messages
    10 399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java/Eclipse RCP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 10 399
    Points : 24 920
    Points
    24 920
    Billets dans le blog
    2

    Par défaut

    Citation Envoyé par dmayorie Voir le message
    la fin du do while il est mentionne "(!estValide(saisie) );" et le compilateur m'affiche une erreur.
    Bah, ça oui, il faut que tu écrives la méthode estValide() ou que tu remplaces sont appel par une expression (booléenne).

    Citation Envoyé par dmayorie Voir le message
    Donc ce que tu me dis : au lieu de faire des comparaisons d'injonction, il serait mieux de faire des if et else if ou encore des if pour chaque cas.
    Non, je ne dis pas ça. Je dis juste que ce n'est pas un "ou" dans cette expression. Si je t'avais parlé de faire une méthode estValide(), c'est justement pour éviter que tu ais ce genre de souci.
    Rappels (d'algèbre de Boole) :
    • non (a ou b) = (non a) et (non b)
    • non (a et b) = (non a) ou (non b).


    Si tu fais une méthode estValide() qui retourne true si son paramètre est l'un des mots valides, alors il suffit d'inverser le résultat de estValide() pour savoir que le mot n'est pas valide, sans avoir à se rappeler de ces règles d'algèbre de Boole. "oui".equalsIgnoreCase(saisie) || "non".equalsIgnoreCase(saisie) est une expression suffisante pour tester si un mot est "oui" ou s'il est "non", quelque soit sa casse. On peut ajouter autant de mots qu'on veut en ajoutant des || machin.equalsIgnoreCase...
    Ensuite il suffit de tester le résultat de l'expression globalement, et de l'inverser pour savoir que la saisie n'est pas valide, et non pas inverser chaque machin.equalsIgnoreCase.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  12. #12
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maldives

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2017
    Messages : 8
    Points : 2
    Points
    2

    Par défaut

    Ca y est, je vois. Utiliser les && car il s'agit !"oui".equals(saisie) . Ca m'est completement passe par la tete !!!

  13. #13
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maldives

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2017
    Messages : 8
    Points : 2
    Points
    2

    Par défaut

    Je suis en train de revoir l'enonce de l'exercicce.

    Il est mentionnee les conditions suivantes a respecter :

    1. Mises à part la méthode main et la méthode presenterLogiciel, vous DEVEZ coder et utiliser
    les méthodes qui suivent. Vous DEVEZ avoir EXACTEMENT les mêmes entêtes pour
    chacune des méthodes obligatoires.
    Vous ne POUVEZ PAS ajouter des méthodes supplémentaires.

    2. L'utilisation de variables de classe (globales) et d'instance est interdit pour ce travail. Donc, toutes les
    variables doivent être déclarées dans des méthodes. Seules les constantes doivent être des constantes de
    classe ou d'instance, c'est-à-dire qu'elles doivent être déclarées à l'extérieur des méthodes.

    3. Les différentes saisies et validations doivent se faire dans des méthodes spécialisées.

    4. Vous devez avoir codé les méthodes obligatoires et vous devez les appeler correctement, soit de la méthode
    main, soit d'une autre méthode (SI cela est pertinent)

    5. Utilisez des constantes ( final ) globales ( static ) le plus possible. Utilisez les types par défaut pour les
    nombres.

    6. Toutes vos méthodes doivent être des méthodes publiques de classe ( public static ).


    Donc je ne peux pas ajouter une autre methode.

  14. #14
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java/Eclipse RCP
    Inscrit en
    septembre 2009
    Messages
    10 399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java/Eclipse RCP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 10 399
    Points : 24 920
    Points
    24 920
    Billets dans le blog
    2

    Par défaut

    Citation Envoyé par dmayorie Voir le message
    Donc je ne peux pas ajouter une autre methode.
    Ok, ce n'est pas grave. Je te proposais ça pour faire l'élaboration à part. C'est toujours plus simple découper un problème en sous-problèmes et de résoudre chaque sous-problème indépendamment des autres. Mais quand tu auras trouvé la bonne condition qui fonctionne, il te suffit de la remettre à la place de l'appel de la méthode, c'est tout. Et si tu préfères l'écrire directement là où il faut, pas de souci. Je t'ai donné le canevas et tu as juste à la place de estValide(saisie) de mettre la bonne condition (entre parenthèse, pour que le ! s'applique bien à tout). Ou alors tu l'écris avec un ! pour chaque test, peu importe, mais tu n'utilises pas de ou, mais des et.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  15. #15
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maldives

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2017
    Messages : 8
    Points : 2
    Points
    2

    Par défaut

    Salut,

    Apres nuit de repos, voila ce que je propose avec hesitation:

    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public static boolean continuer (String msgInvite)
    {
     
        System.out.println(msgInvite);
        while(false)
        {
     
            if(!saisie.equalsIgnoreCase("oui") && !saisie.equalsIgnoreCase("o"))
                return true;
            if(!saisie.equalsIgnoreCase("non") && !saisie.equalsIgnoreCase("n"))
                return false;
            System.out.println ("ERREUR! La reponse doit etre oui, non , o ou n" );
        }
    }

    Je ne sais pas si c correct. car dans mon cours, dans mon cours les exemples sont souvent ecris avec un seul return avec egal en dehors de la boucle et le conseil du prof a distance est d'eviter absoulement de mettre plusieurs return dans une methode.

    Je croyais aussi, selon le cours, que je devais declarer le booleen pour que ca retourne true ou false avant d'entamer les conditions, comme par exemple:

    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    boolean continuer;
    continuer = true;
    Sopln ();
    While ou if (){}
    return true;

    J'apprends.

    Ceci n'est pas bien explique dans le cours. Mais si je comprends bien, le equalsIgnoreCase( ) fait en meme un equal et un ignore case a un String. J'ai tjs assume que equalsIgnoreCase( ) signifiait "egal a ignorer Maj et Min". Et que le boolean equal(String s) signifiait respecter la longueur du String.

    Par contre, une chose que je souhaiterais ajouter : un message de FIN DE PROGRAMME" quand je saisie non. Je fais comment !!!

  16. #16
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    août 2005
    Messages
    5 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : août 2005
    Messages : 5 730
    Points : 20 318
    Points
    20 318
    Billets dans le blog
    31

    Par défaut

    Il faudrait que tu essaies de jouer un peu plus avec les booléens (programme quelques tests ou si tu utilises le JDK 9 essaie avec Jshell) histoire de comprendre comment fonctionne leur arithmétique (que tu ne sembles pas avoir abordé). Ta boucle while (false) ne fonctionnera jamais car elle se base sur un test qui échoue tout le temps. Cela risque donc d’échouer à la compilation avec une erreur du genre unreachable statement sur le contenu du while. Le bon test pour faire fonctionner cette boucle est donc while (true).

    Après ton test lui-même semble être foireux. Si j'ai bien suivi ce que tu expliquais tu tentes de faire:

    Si la chaine est égale a "oui" ou si la chaine est égale a "o", renvoyer true.
    Si la chaine est égale a "non" ou si la chaine est égale a "non", renvoyer false.
    Sinon afficher une erreur et continuer la boucle.
    Or il se trouve que puisque tu as une condition négative ce test fait totalement l’opposé de ce que tu cherches. En effet, on peut le traduire par:

    Si la chaine est différente de "oui" et si la chaine est différente de "o", renvoyer true.
    Si la chaine est différente de "non" et si la chaine est différente de "o", renvoyer false.
    Sinon afficher une erreur et continuer la boucle.
    Il est peut-être temps d'introduire des commentaires dans ton code pour garder des repères sur ce que tu essaies de faire.

    Citation Envoyé par dmayorie Voir le message
    J'ai tjs assume que equalsIgnoreCase( ) signifiait "egal a ignorer Maj et Min". Et que le boolean equal(String s) signifiait respecter la longueur du String.
    Il ne faut jamais assumer mais au contraire toujours se référer a la documentation de la méthode qui est censée bien expliquer ce qui se passe.

    Par contre, une chose que je souhaiterais ajouter : un message de FIN DE PROGRAMME" quand je saisie non. Je fais comment !!!
    En testant la valeur de retour de la fonction qui fait le test (et est censée retourner false quand elle sera correctement programmée) et en faisant un affichage. Question évidente, réponse évidente

    Invocation invocation de la méthode continuer() qui boucle sur la saisie utilisateur
    Si le test renvoie false (si le test échoue)
    Imprimer un message.
    quitter.
    Sinon continuer le programme principal.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  17. #17
    Candidat au Club
    Femme Profil pro
    Collégien
    Inscrit en
    novembre 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : Marshall (iles)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : novembre 2017
    Messages : 19
    Points : 3
    Points
    3

    Par défaut

    Ok !!! Merci !!!

    Donc voila les rectificatifs :

    Code JAVA : 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
    public static boolean continuer (String msgInvite){
                String saisie;       
                System.out.println(msgInvite);
                while(true)
                {
                saisie = Clavier.lireString();
     
                if(saisie.equalsIgnoreCase("oui") || saisie.equalsIgnoreCase("o"))
                    return true;
     
                if(saisie.equalsIgnoreCase("non") || saisie.equalsIgnoreCase("n"))
                    return false;
                System.out.println("ERREUR! La reponse doit etre oui, non , o ou n" );
     
            }
        }

    Merci encore.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/11/2002, 15h15
  2. [Rave]Personne ne l'utilise ?? Demande d'info...
    Par Barbibulle dans le forum Rave
    Réponses: 4
    Dernier message: 08/11/2002, 00h12
  3. [Kylix] Demande de confirmation Kylix Delphi
    Par mailstef dans le forum EDI
    Réponses: 3
    Dernier message: 21/10/2002, 11h17
  4. [CR 8.5][Web] demande de connexion récurrente.
    Par Edison dans le forum Connectivité
    Réponses: 4
    Dernier message: 09/07/2002, 18h48

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