2016-11-04 5 views
-8

So ist es eine Schulaufgabe (Ich bin ein Anfänger, begann mit C# diese Woche). Wir haben eine Klasse, die die Funktionen speichert. Diese Funktion soll prüfen, ob eine Person auf das Karussell gehen kann oder nicht. Variablen: Bool hasHeartCondition int Alter int cmNicht alle Codepfade geben einen Wert zurück. In C#

public bool CanJoyride(int age, int cm, bool hasHeartCondition) 
    { 
     if (hasHeartCondition == true) 
     { 
      return false; 
     } 
     else if (hasHeartCondition == false) 
     { 
      if (age >= 18) 
      { 
       if (cm >= 130 && cm <= 210) 
       { 
        return true; 
       } 

      } 
      else if (age >= 12) 
      { 
       if (cm >= 150 && cm <= 210) 
       { 
        return true; 
       } 

      } 
      else 
      { 
       return false; 
      } 
     } 
     else 
     { 
      return false; 
     } 
    } 

Der Grund, warum ich eine neue Frage für diese zu machen ist, weil ich nicht wirklich den Code in den Fragen wie diese folgen kann. Denn ich bin wirklich neu in diesem Bereich.

+0

Ersetzen Sie das letzte 'else' mit nur' return false' – UnholySheep

+1

Hinweis: Wenn Sie hier eine Frage stellen, sagen Sie nicht, es ist eine Schule Aufgabe – meJustAndrew

+0

Wenn das Alter> = 18 und die Höhe nicht in das fallen Angebot? Und auch - wenn das Alter> 12 ist, aber die Höhe nicht in Reichweite ist? –

Antwort

4

Ihr Problem ist, dass Sie am Ende Ihrer Methode keinen Wert zurückgeben. Sie können Ihre Methode wie folgt neu schreiben. Es ist verständlicher und sollte Ihre Anforderungen erfüllen.

public bool CanJoyride(int age, int cm, bool hasHeartCondition) 
{ 
    if (hasHeartCondition)   
     return false; 


    if(age >= 18 && cm >= 130 && cm <= 210) 
     return true; 


    if (age >= 12 && cm >= 150 && cm <= 210) 
     return true; 

    return false;   
} 

Sie sollten es vermeiden, Code in Pfeilrichtung zu schreiben. Das bedeutet verschachtelt zu werden, wenn der Code unlesbar und schwer zu folgen ist.

Verwandte Themen