webForumDet fria alternativet

Missing return statement - varför?

2 svar · 445 visningar · startad av tovelainen

tovelainenMedlem sedan mars 2003143 inlägg
#1

hallå ja.
gott nytt år på er!

Jag håller på med en metod. Som ganska ofta händer så får jag meddelandet att det saknas return. Beror det på alla if-satserna? Får jag inte ha loopar i en metod som kräver return i form av String? Tacksam för lärdom eftersom jag ofta gör om felet:
-------------------

public String getPorto(int vikt, int längd, int bredd, int höjd) {

if (vikt \< 6) {
  if (längd \> 50 \|\| bredd \> 30 \|\| höjd \> 40)
    return " 25 kr ";
    else
    return " 5 kr ";
         }
         if (vikt \> 5 && vikt \< 51) {
           if (längd \> 50 \|\| bredd \> 30 \|\| höjd \> 40)
      return " 30 kr ";
      else
      return " 10 kr ";
         }
         if (vikt \> 50 && vikt \< 501) {
           if (längd \> 50 \|\| bredd \> 30 \|\| höjd \> 40)
      return " 50 kr ";
      else
      return " 30 kr ";
         }
         if (vikt \> 500) {
           if (längd \> 50 \|\| bredd \> 30 \|\| höjd \> 40)
      return " 70 kr ";
      else
      return " 50 kr ";
         }
  }

--------------------------
Tack så länge!

PhorpherMedlem sedan feb. 20002 059 inlägg
#2

Ponera att alla dina yttre if-satser är false. Dvs. ingen av de "inre"-satserna kommer att exekveras. Då har du ett missat "return statement".

Du måste alltså alltid returnera någonting; En return i slutet på funktionen.

Fel: Vad händer om bar är mindre eller lika med fem?

public String Foo(int bar)
{
    if(bar > 5)
        return "Större än fem";
}

Rätt: Alla möjliga "vägar" i programflödet har en return-sats.

public String Foo(int bar)
{
    if(bar > 5)
        return "Större än fem";
    else
        return "Mindre eller lika med fem";
}
tovelainenMedlem sedan mars 2003143 inlägg
#3

AAAAh!! Tackar så jättemycket. Då fattar jag!
hej från

Genererad på 371 ms · cache AV · v20260730165559-full.f96bc7eb