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 :

Missing return statement et autres joyeusetés


Sujet :

avec Java

  1. #1
    Invité
    Invité(e)
    Par défaut Missing return statement et autres joyeusetés
    Bonjour à tous.

    Je suis en train de me faire la main sur quelques problèmes simples grâce à CodingBat. Je me heurte à un problème pour lequel je ne trouve pas la solution.

    Le problème en question

    Si je fais le code ci-dessous, 2 cas de tests ne sont pas validés et je ne comprends pas pourquoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public String seeColor(String str) {
      if (str.length() >=3){
        if (str.substring(0,3).equals("red"))
          return "red";
      }
      else if (str.length()>=4) {
        if (str.substring(0,4).equals("blue"))
          return "blue";
      }
     return ("");
    }
    Par ailleurs, si j'utilise le code ci-dessous, j'ai droit à un "missing return statement" et je ne comprends pas non plus pourquoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public String seeColor(String str) {
      if (str.length() >=3){
        if (str.substring(0,3).equals("red"))
          return "red";
      }
      else if (str.length()>=4) {
        if (str.substring(0,4).equals("blue"))
          return "blue";
      }
     else return ("");
    }
    C'est sans doute trivial et évident, mais je sèche. Une piste ? Merci d'avance.

  2. #2
    Membre confirmé
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Points : 575
    Points
    575
    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
    public String seeColor(String str) {
      if (str.length() >=3){
        if (str.substring(0,3).equals("red"))
          return "red";
        else return ?
      }
      else if (str.length()>=4) {
        if (str.substring(0,4).equals("blue"))
          return "blue";
        else return ?
      }
     else return ("");
    }

  3. #3
    Invité
    Invité(e)
    Par défaut
    C'était bien trivial et évident, Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public String seeColor(String str) {
      if (str.length() >=3 && str.substring(0,3).equals("red"))
          return "red";
      else if (str.length()>=4 && str.substring(0,4).equals("blue"))
          return "blue";
      else return ("");
    }

  4. #4
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Pour ce genre de problème, je te conseillerai plutôt de passer par des expressions régulières (pour des cas plus compliqués), et pour ce cas-là, par la méthode de la classe String "startsWith(String)".

    @see http://download.oracle.com/javase/1....lang.String%29
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci pour l'information. J'ai donc transformé mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public String seeColor(String str) {
      if (str.length() >=3 && str.startsWith("red"))
        return "red";
      else if (str.length() >=4 && str.startsWith("blue"))
        return "blue";
      else return ("");
    }

  6. #6
    Membre confirmé
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Points : 575
    Points
    575
    Par défaut
    Perso je fait régulièrement comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public String seeColor(String str) {
      String ret="";
     
      if (str.length() >=3 && str.startsWith("red"))
        ret="red";
      else if (str.length() >=4 && str.startsWith("blue"))
        ret="blue";
     
      return ret;
    }

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par william44290 Voir le message
    Perso je fait régulièrement comme cela :
    ...
    Le fait d'intégrer une variable locale n'a-t-il pas un impact sur la consommation mémoire ? Évidemment sur une portion de code aussi petite, ça n'a aucune conséquence, mais ne vaut-il pas mieux éviter les variables temporaires lorsque c'est possible ?

  8. #8
    Membre confirmé
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Points : 575
    Points
    575
    Par défaut
    Il n'y a pas franchement de problème de consommation mémoire en java.

    Ceci est une affaire de style. robustesse, lisibilité, performance etc .. a chacun de se déterminer.

    j'aurrais probablement fait comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public String seeColor(String str) {
      String ret="";
      if (str!=null) {
         if (str.equals("red"))
            ret=str;
         else if (str.equals("blue"))
            ret=str;
      } 
      return ret;
    }

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

Discussions similaires

  1. missing return statement
    Par hakimlyonnais dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 02/02/2013, 13h17
  2. Erreur "missing return statement"
    Par Arketran dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 02/10/2011, 12h02
  3. Classes abstraites et 'missing return statement'
    Par popy67 dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 28/12/2010, 22h29
  4. erreur "missing return statement"
    Par amnass dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 08/12/2010, 16h34
  5. missing return statement
    Par Zozzio dans le forum Langage
    Réponses: 2
    Dernier message: 04/01/2008, 23h00

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