Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JAVA] Problème avec un return, cela doit me retourner une durée composée de 3 entiers.

C'est tout bête je pense

    7 janvier 2007 à 18:37:21

    public class Duree
    {
            private int heures;
            private int minutes;
            private int secondes;
           
            public Duree (int h, int m, int s)
            {
                    this.heures = h;
                    this.minutes = m;
                    this.secondes = s;
            }
            public Duree plusUneSeconde()
            {
                    if (this.secondes < 59)
                    {
                            this.secondes ++;
                    }
                    else
                    {
                            this.secondes = 0;
                            if (this.minutes < 59)
                            {
                                    this.minutes ++;
                            }
                            else
                            {
                                    this.minutes = 0;
                                    if (this.heures < 23)
                                    {
                                            this.heures ++;
                                    }
                                    else
                                    {
                                            this.heures = 0;
                                    }
                            }
                    }
            return (????);
            }


    VOila, j'ai un trou, comment renvoyer une durée. SI quelqu'un pouvait m'aider ça serait bien. Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      7 janvier 2007 à 19:15:51

      return String.valueOf(this.heures)+":"+String.valueOf(this.minutes)+":"+String.valueOf(this.secondes)
      • Partager sur Facebook
      • Partager sur Twitter
        7 janvier 2007 à 19:47:35

        Non, il me faut obligatoirement une string en retour!!
        • Partager sur Facebook
        • Partager sur Twitter
          7 janvier 2007 à 20:06:36

          Il suffit que ta fonction retourne un objet Duree qui sera crée à l'interieur de la fonction.

          Mais, une méthode, modifie directement les valeurs des attribus de sa classe. Donc tu n'as pas besoin de return.
          • Partager sur Facebook
          • Partager sur Twitter
            8 janvier 2007 à 10:09:08

            Citation

            return String.valueOf(this.heures)+":"+String.valueOf(this.minutes)+":"+String.valueOf(this.secondes)




            Citation

            Non, il me faut obligatoirement une string en retour!!



            c'est bien ce que ca fait !!!!!
            • Partager sur Facebook
            • Partager sur Twitter
              9 janvier 2007 à 13:34:15

              Ce n'est pas un return qu'il te faut. C'est simplement changer la valeur de ta durée donc :

              public class Duree
              {
                      private int heures;
                      private int minutes;
                      private int secondes;
                     
                      public Duree (int h, int m, int s)
                      {
                              this.heures = h;
                              this.minutes = m;
                              this.secondes = s;
                      }
                      public void plusUneSeconde()
                      {
                              if (this.secondes < 59)
                              {
                                      this.secondes ++;
                              }
                              else
                              {
                                      this.secondes = 0;
                                      if (this.minutes < 59)
                                      {
                                              this.minutes ++;
                                      }
                                      else
                                      {
                                              this.minutes = 0;
                                              if (this.heures < 23)
                                              {
                                                      this.heures ++;
                                              }
                                              else
                                              {
                                                      this.heures = 0;
                                              }
                                      }
                              }
                      }


              dans ce cas là :

              Duree horaire = new Duree(22,13,15);


              horaire vaut 22h13 et 15sec

              horaire.plusUneSeconde()


              horaire vaut 22h13 et 16sec


              Si ce n'est pas ça que tu veux faire alors :
              - soit ta question n'est pas la bonne
              - soit tu devrais revoir un peu la programmation objet


              J'espère que j'ai pu répondre à ton problème
              • Partager sur Facebook
              • Partager sur Twitter
                9 janvier 2007 à 15:59:08

                +1 madevilts et implémente une fonction toString qui te permettra d'afficher ton objet :

                public String toString()
                {
                        return String.valueOf(this.heures)+
                        ":"+String.valueOf(this.minutes)+
                        ":"+String.valueOf(this.secondes);
                }


                Et maintenant pour afficher ta durée tu as juste à faire un

                Duree monObjet = new Duree(10,11,58);
                monObjet.plusUneSeconde();
                System.out.println(monObjet);


                C'est la méthode d'affichage la plus propre que tu puisse avoir
                • Partager sur Facebook
                • Partager sur Twitter
                  9 janvier 2007 à 16:27:51

                  System.out.println(monObjet.toString());


                  Non ? Ou alors le toString() est implicite ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    9 janvier 2007 à 16:41:25

                    Justement c'est l'avantage du toString. C'est une methode qui est implicite si tu cherche a afficher un objet le programme va rechercher une methode toString si il en trouve un il t'affichera selon ce que tu as formatter dans ta chaine de retour, s'il en trouve pas alors il taffichera l'adresse mémoire de ton objet.

                    Mais il faut impérativement l'appeller toString() et quelle renvoie une string
                    • Partager sur Facebook
                    • Partager sur Twitter
                      9 janvier 2007 à 17:18:42

                      Ok merci ! :D Comme j'ai pris l'habitude de toujours le mettre pour l'appel de méthode (pour me faciliter la lecture du code), je ne savais plus si c'était obligatoire. :p
                      • Partager sur Facebook
                      • Partager sur Twitter

                      [JAVA] Problème avec un return, cela doit me retourner une durée composée de 3 entiers.

                      × 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