Partage
  • Partager sur Facebook
  • Partager sur Twitter

Demande de coup de pouce !!

    8 novembre 2017 à 3:15:54

    Bonjour,

    Je suis un debutant dans java et je suis des cours par distance et je suis confronte a un exercicie qui n'a pas de corrige.

    Je souhaite vous demander de me depannersur ce cas :

    Et voici le code que j'ai effectue :

    public static int saisirEtValiderNoCivique (String invite, int min, int max){

            int noCivique = 0;

            max = 9999;

            min = 1;

            invite = "Entrez un numero civique pour la PREMIERE adresse :";

            if (noCivique < min || noCivique > max) {

                System.out.println ("ERREUR! Le numero doit etre entre 1 et" + 

                    "9999 inclusivement.");

            }

            return noCivique;

        }

    Est ce que c'est correcte !!!

    -
    Edité par MayoMayorie 11 novembre 2017 à 23:24:39

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      8 novembre 2017 à 9:26:52

      Salut,

      Insère ton code à l'aide du bouton </>. Edite ton sujet pour faire ce changement, pour rendre ton code plus lisible.

      Ensuite, qu'est-ce que tu demandes ? Nous n'avons pas les consignes donc on ne pourra rien faire. As-tu fait des tests ? Passent-ils ?

      • Partager sur Facebook
      • Partager sur Twitter
        8 novembre 2017 à 10:12:48

        Bonjour,

        invite, min et max sont les paramètres de la méthode. On leur donne une valeur quand on appelle la méthode, pas à l'intérieur de celle-ci.

        Dans le code que tu as donné, tu "écrases" les paramètres avec des valeurs codées "en dur".

        Pour reproduire l'exemple donné, il faudrait appeler la méthode comme ceci

        int noCiviqueValide = saisirEtValiderNoCivique("Entrez un numero civique pour la PREMIERE adresse : ", 1, 9999);


        Ce que ma logique me dit, c'est que la méthode doit fonctionner comme ça.

        1. on affiche l'invite

        2. on saisit la réponse de l'utilisateur

        3. on teste si la réponse est bonne

            si non, on affiche le message d'erreur et on redemande

            si oui, on retourne la bonne réponse

        Il te manque le 2 et le fait de redemander si le numéro est mauvais. (indice : ça sent très fort la boucle "do while")

        • Partager sur Facebook
        • Partager sur Twitter
          9 novembre 2017 à 4:27:13

          Salut tout monde,

          Voilà, actuellement je suis le cours  Apprenez à programmer en Java sur Openclassroom et là, j'en suis à l'héritage.

          Celui ci me pose vraiment problème parce que quand je crée une classe Capitale qui hérite de la classe Ville, même si je crée un constructeur d'objet Capitale, quand j'instancie mon objet Capitale et que je compile mon programme, je me rend compte que le compilateur fait toujours appel au constructeur par defaut de la classe Ville (la classe mère) en plus de mon nouveau constructeur et je ne comprend vraiment pas. Est ce que c'est normal ce phénomène?

          Merci de me lire et merci d'avance de m'apporter vos aides :)

          • Partager sur Facebook
          • Partager sur Twitter
          Kanti
            9 novembre 2017 à 11:44:04

            Salut. Oui , le constructeur de la classe de base doit toujours être appelé avant. Si tu ne le fais pas explicitement dans le constructeur de la classe fille alors le constructeur par défaut de la classe de base sera appelé. Ce qui fait par exemple que ce genre de code ne compile pas

            class Ville
            {
               int attr;
               public Ville(int attr)
               {
            this.attr = attr;
            } } class Capitale extends Ville { public Capitale() {
            System.out.print("Coucou"); } }

            Vu que tu n'appelles pas explicitement le constructeur de la classe de base, JAVA va tenter d'appeler le constructeur par défaut(sans arguments)...qui n'existe pas.

            C'est pas expliqué dans le cours ?

            -
            Edité par kulturman 9 novembre 2017 à 11:45:12

            • Partager sur Facebook
            • Partager sur Twitter
              9 novembre 2017 à 16:19:13

              Merci Beaucoup kulturman :)

              Bon dans la leçon c'est peut être dit, mais la manière dont on l'explique, j'ai pas du le comprendre;

              En effet, dans la leçon, on n'a pas fait de constructeur pour la classe Fille, et il nous est dit que la JVM va faire lui même un constructeur par defaut et en suite il est dit ceci:

              "Notre classeCapitalehérite de la classeVille, par conséquent, le constructeur de notre objet appelle, de façon tacite, le constructeur de la classe mère".

              Là, je me suis dis que si le constructeur de la fille appelle celui de la mère c'est parce que c'est un constructeur que la JVM a créé et que, si on n'avait créé notre propre constructeur à la classe fille, celui ci n'aurait pas appelé celui de la classe mère.

              Je ne sais pas si j'ai bien expliqué :D;

              En tout cas, merci beaucoup.

              • Partager sur Facebook
              • Partager sur Twitter
              Kanti
                9 novembre 2017 à 16:56:13

                Oui, je comprends ce que tu veux dire. Mais bon, tu connais la vérité maintenant ;). Bonne suite.
                • Partager sur Facebook
                • Partager sur Twitter
                  10 novembre 2017 à 0:10:06

                  Salut BruBru777,

                  Voici le resulta du premier exercice et ca marche :

                  public static int saisirEtValiderNoCivique (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 = saisirEtValiderNoCivique("Entrez un numero" +
                                  "civique pour la PREMIERE adresse : ", 1, 9999);
                  
                      } // main
                  


                  Merci.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 novembre 2017 à 3:07:07

                    Juste quelques petites corrections

                    • tu n'affiches pas l'invite avant de récupérer le numéro
                    • le = 1 ne sert à rien puisque tu l'écrases juste après avec une autre valeur
                    • dans le message d'erreur et la condition du while,tu devrais utiliser min et max plutôt que 1 et 9999
                    • il faudrait tester si le numéro est incorrect avant d'afficher le message d'erreur
                    • tu peux simplifier ton code en changeant l'ordre des instructions dans le do while (un seul lireInt suffira)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 novembre 2017 à 3:49:46

                      Tu me dis que je n'ai pas affiche l'invite avant de recuperer. Je croyais que :
                      int noCiviqueValide = saisirEtValiderNoCivique("Entrez un numero" +
                                      "civique pour la PREMIERE adresse : ", 1, 9999);

                      dans le main etait le message d'invite.

                      La compilation est correcte et la console m'affiche ceci :

                      Entrez un numerocivique pour la PREMIERE adresse :
                      12
                      ERREUR! Le numero doit etre entre 1 et9999 inclusivement.

                      Pourrais tu me clarifier cette situation?

                      Merci.

                      Mercifsvfvvgvbvv

                      • Partager sur Facebook
                      • Partager sur Twitter
                        10 novembre 2017 à 7:34:10

                        Tu as dû oublier de copier une ligne car dans le code que tu as posté ici, je ne vois nulle part
                        System.out.println(invite);
                        • Partager sur Facebook
                        • Partager sur Twitter
                          10 novembre 2017 à 15:13:34

                          Ok Super  !!!! Merci.

                          J'ai effectue des modifications car des la premiere saisie ca m'affiche le msg erreur meme si le chiffre est inclus ds l'intervalle.

                          public static int saisirEtValiderNoCivique (String invite, int min, int max){
                          
                                  int noCiviqueValide  ;
                          
                                  System.out.println(invite);
                                  noCiviqueValide = Clavier.lireInt();
                          
                                  do  {
                                      if (noCiviqueValide < min || noCiviqueValide > max){
                          
                                          System.out.println ("ERREUR! Le numero doit etre entre 1 et" + 
                                              "9999 inclusivement.");
                                          noCiviqueValide = Clavier.lireInt();
                                      }
                          
                                  } while (noCiviqueValide < min || noCiviqueValide > max);
                                  return noCiviqueValide;
                              }
                          
                          
                              // Autres m�thodes s'il y a lieu
                              public static void main (String[] params) {
                          
                                  int noCiviqueValide = saisirEtValiderNoCivique("Entrez un numero" +
                                          "civique pour la PREMIERE adresse : ", 1, 9999);
                          
                              } // main



                          • Partager sur Facebook
                          • Partager sur Twitter
                            10 novembre 2017 à 16:00:56

                            Ton code marche bien mais voici quand même une dernière petite correction (je chipote).

                            public static int saisirEtValiderNoCivique (String invite, int min, int max){
                             
                                System.out.println(invite);
                                // Il vaut mieux déclarer les variables là où on en a besoin. Le plus tard possible, mais pas trop
                                int noCivique; // Le numéro n'est valide qu'à la sortie de la boucle
                                boolean noIncorrect;
                             
                                do {
                                    noCivique = Clavier.lireInt();
                                    // On stocke le calcul pour éviter de le répéter deux fois
                                    noIncorrect = noCivique < min || noCivique > max;
                                    if (noIncorrect) {
                                        System.out.println ("ERREUR! Le numero doit etre entre " + min + " et " +
                                                            max + " inclusivement.");
                                    }
                                } while (noIncorrect);
                                return noCivique;
                            }



                            -
                            Edité par brubru777 10 novembre 2017 à 16:01:53

                            • Partager sur Facebook
                            • Partager sur Twitter
                              10 novembre 2017 à 17:20:17

                              Yatta !!!! Ca marche !!!

                              Bon maintenant au prochain exercice !!!

                              Merci encore.

                              Je suis en train de travailler sur les String. Je vois que je dois convertir des String en booleen.

                              Voici l'enonce:

                              public static boolean continuer (String msgInvite)

                              Voici ce que je propose (le probleme que j'ai est que BlueJ m'affcihe une erreur sur while (!estValide(saisie) ); :

                              public static boolean continuer (String msgInvite){
                                      String saisie;
                              
                                      boolean continuer;
                                      continuer = true;
                                      
                                      
                              
                                      System.out.println(msgInvite); 
                                      
                                      saisie = Clavier.lireString(); 
                              
                                      continuer = saisie.equalsIgnoreCase("oui");
                                      continuer = saisie.equalsIgnoreCase("non");
                                      continuer = saisie.equalsIgnoreCase("o");
                                      continuer = saisie.equalsIgnoreCase("n");
                              
                                      int strlen;
                                      strlen=saisie.length();
                                      
                                      
                              
                                      do {
                                          saisie = Clavier.lireString();  
                                          
                                          do  {
                                              System.out.println ("ERREUR! La reponse doit etre oui, non , o ou n" );
                                              saisie = Clavier.lireString();
                                          } while (strlen > 3 || strlen == 2 );
                              
                                          continuer = !"oui".equals(saisie);
                                          continuer = !"non".equals(saisie);
                                          continuer = !"o".equals(saisie);
                                          continuer = !"n".equals(saisie);
                                          
                                          System.out.println ("ERREUR! La reponse doit etre oui, non , o ou n" );
                              
                                          
                              
                                      } while (continuer = false ); 
                                      
                                      return continuer;
                                  }

                              Qu'en penses tu ?

                              -
                              Edité par MayoMayorie 12 novembre 2017 à 15:57:16

                              • Partager sur Facebook
                              • Partager sur Twitter
                                10 novembre 2017 à 21:56:08

                                Salut. while (!estValide(saisie) ); ? Je ne vois pas une telle ligne dans le code que tu as posté.

                                Ligne 40. Qu'est ce que tu cherches à faire.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  10 novembre 2017 à 22:58:13

                                  Je suis en train de travailler sur les String. Je vois que je dois convertir des String en booleen.

                                  Voici l'enonce:

                                  public static boolean continuer (String msgInvite)

                                  DESCRIPTION : Demande à l'utilisateur s'il veut continuer d'effectuer des analyses. Les réponses possibles sont « oui », « non », « o » ou « n » (majuscules et minuscules confondues donc « NoN » est une réponse valide). Le paramètre invite est le message qui sera affiché pour demander à l'utilisateur s'il veut continuer. En cas de réponse invalide, la méthode DOIT afficher un message d'erreur significatif . La méthode retourne vrai si l'utilisateur veut continuer, faux s'il ne veut pas continuer.

                                  Voici ce que je propose (le probleme que j'ai est que BlueJ m'affcihe une erreur sur while (!estValide(saisie) ); :

                                  public static boolean continuer (String msgInvite){
                                          String saisie;
                                  
                                          boolean estValide;
                                          estValide = true;
                                  
                                          System.out.println(msgInvite); 
                                  
                                          estValide = saisie.equalsIgnoreCase("oui");
                                          estValide = saisie.equalsIgnoreCase("non");
                                          estValide = saisie.equalsIgnoreCase("o");
                                          estValide = saisie.equalsIgnoreCase("n");
                                  
                                          int strlen;
                                          strlen=saisie.length();
                                          
                                          
                                  
                                          do {
                                              saisie = Clavier.lireString();  
                                              
                                              do  {
                                                  System.out.println ("ERREUR! La reponse doit etre oui, non , o ou n" );
                                                  saisie = Clavier.lireString();
                                              } while (strlen > 3 || strlen == 2 );
                                  
                                              estValide = !"oui".equals(saisie);
                                              estValide = !"non".equals(saisie);
                                              estValide = !"o".equals(saisie);
                                              estValide = !"n".equals(saisie);
                                              
                                              System.out.println ("ERREUR! La reponse doit etre oui, non , o ou n" );
                                  
                                              
                                  
                                          } while (!estValide(saisie) ); 
                                          
                                          return estValide;
                                      }

                                  Qu'en penses tu ?

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    10 novembre 2017 à 23:03:07

                                    Euh... "estValide" est une méthode?
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      11 novembre 2017 à 0:51:10

                                      Desole j'ai faire appel a une autre methode Estvalide. mais l'enonce est claire, je viens de relire, que je ne dois pas ajouter des methodes supplementaires.

                                      Je suis perdu.. a bout d'idees.

                                      Par desespoir et je sais que c'est du n'importe quoi, voila ce que je propose :

                                      public static boolean continuer (String msgInvite){
                                              String saisie;
                                      
                                              boolean continuer;
                                              continuer = true;
                                      
                                              System.out.println(msgInvite); 
                                              saisie = Clavier.lireString(); 
                                              
                                              
                                              continuer = saisie.equalsIgnoreCase("oui"); 
                                              continuer = saisie.equalsIgnoreCase("non"); 
                                              continuer = saisie.equalsIgnoreCase("o");
                                              continuer = saisie.equalsIgnoreCase("n");
                                      
                                              int strlen;
                                              strlen=saisie.length();
                                      
                                              do {
                                                  saisie = Clavier.lireString();
                                                  
                                                  if (continuer == !"oui".equals(saisie) && continuer == !"non".equals(saisie) 
                                                  && continuer == !"o".equals(saisie) && continuer == !"n".equals(saisie)) {
                                                      System.out.println ("ERREUR! La reponse doit etre oui, non , o ou n" );
                                                  }
                                                  
                                                  if (strlen > 3 || strlen == 2) {
                                                      System.out.println ("ERREUR! La reponse doit etre oui, non , o ou n" );
                                                      saisie = Clavier.lireString();
                                                  }
                                              } while (continuer == false);
                                              return continuer;
                                          }



                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        11 novembre 2017 à 9:37:31

                                        Tu te compliques la vie. Bon, OK, voilà pour toi

                                        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" );
                                            }
                                        }

                                        Désolé, impossible de colorer le code.



                                        -
                                        Edité par kulturman 11 novembre 2017 à 9:42:32

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          11 novembre 2017 à 15:09:57

                                          Wooow !!! Ok je vois maintenant !!! Pas du tout ce que j'avais en tete.`

                                          Je ne savais pas qu'on pouvait mettre des return dans les conditions et sans le signe egal car 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 booleen.

                                          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:

                                          boolean continuer;
                                          
                                          continuer = true;
                                          
                                          
                                          Sopln ();
                                          
                                          While ou if (){}
                                          
                                          return true;



                                          Merci.

                                          J'apprends.

                                          Si jecomprends bien,  le equalsIgnoreCase( ) fait en meme un equal et un ignore case a un String. J'ai tjs assume que equalsIgnoreCase( ) etait un String signifiait 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 !!!

                                          -
                                          Edité par MayoMayorie 11 novembre 2017 à 18:18:08

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            18 novembre 2017 à 18:40:34

                                            Bonjour,

                                            j'ai besoin de votre aide !!!

                                            Je souhaiterais afficher un nombre total de "oui" ou "o" effectues (ou saisis)

                                            Je sais que je dois commencer pas un Sopln puis apres .... je coince !!!

                                            J'ai deja declare et initialise une variable int nbreAnalyse = 0 et int nbreTotalAnalyse = 0 ; nbreTotalAnalyse = nbreAnalyse +1

                                            Par la suite je dois incrementer ... mais comment ? Je ne peux pas utiliser du String "oui" ou "o" avec du int.

                                            Pourriez vous m'indiquer comment faire.



                                            Merci beaucoup pour votre aide !!!

                                            Cordialement.

                                            -
                                            Edité par MayoMayorie 19 novembre 2017 à 17:38:46

                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            Demande de coup de pouce !!

                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                            • Editeur
                                            • Markdown