2017-11-12 1 views
0

Ich bin neu in der Codierung und bin bestrebt, eine Anwendung zu machen, die eine Person Grundumsatz basierend auf ihrem Geschlecht, Größe, Gewicht und Ausübung Betrag berechnen wird. Die Anwendung sollte die bereitgestellten Informationen nehmen und eine Gleichung basierend auf ihrem Geschlecht ausführen, um ihre BMR zu berechnen. Als nächstes sollte es die Person BMR nehmen und multiplizieren, je nachdem, wie oft die Person übt. Bis jetzt war ich in der Lage, die Anwendung eine andere Gleichung basierend auf dem Geschlecht ausführen zu lassen. Ich bin jedoch nicht in der Lage, den Antrag aus der ersten Gleichung zu übernehmen und mit dem ausgeübten Betrag zu multiplizieren. Ich entschuldige mich, wenn ich in meiner Beschreibung nicht genau genug bin. Ich bin ziemlich neu im Codieren und habe wirklich keine Ahnung, was ich mache.C# Tägliche Kalorie Intake Calculator

Alle und alle Hilfe wird geschätzt. Hier ist mein Code:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace WindowsFormsApplication9 
{ 
    public partial class calorieCalculator : Form 
    { 
     public calorieCalculator() 
     { 
      InitializeComponent(); 
     } 

     private void calorieCalculator_Load(object sender, EventArgs e) 
     { 
     } 

     private void calculateButton_Click(object sender, EventArgs e) 
     { 
      string gender, exercise; 
      double height, weight, age, malebmr, femalebmr; //variables 
      decimal bmrmult; 

      // get personal information 
      height = double.Parse(heightTextBox.Text); 
      weight = double.Parse(weightTextBox.Text); 
      age = double.Parse(ageTextBox.Text); 
      // select gender 
      if (genderList.SelectedIndex != -1) 
      { 
       gender = genderList.SelectedItem.ToString(); 
       switch (gender) 
       { 
        case "Male": 
         // perform calculation 
         malebmr = weight * 10 + height * 6.25 - age * 5 - 5 ; 
         bmrDisplay.Text = ("Your base metabolic rate burns " + malebmr + " calories"); 
         break; 
        case "Female": 
         femalebmr = weight * 10 + height * 6.25 - age * 5 - 161; 
         MessageBox.Show("You should eat:" + femalebmr + "calories"); 
         break; 
       } 
      } 
     } 

     private void caloriesButton_Click(object sender, EventArgs e) 
     { 
      if (exerciseList.SelectedIndex != -1) 
      { 
       string exercise; 
       decimal bmrmult; 
       exercise = exerciseList.SelectedItem.ToString(); 
       switch (exercise) 
       { 
        case "Light exercise (1–3 days per week)": 
         bmrmult = 1.375M; 
         break; 
        case "Moderate exercise (3–5 days per week)": 
         bmrmult = 1.55M; 
         break; 
        case "Heavy exercise (6–7 days per week)": 
         bmrmult = 1.725M; 
         break; 
        case "Very heavy exercise (twice per day, extra heavy workouts)": 
         bmrmult = 1.9M; 
         break; 
       } 
      } 
     } 
    } 
} 

EDIT: Ich habe versucht, meinen Code zu überarbeiten und meine zweite Taste zu entfernen. Jetzt bekomme ich ein neues Problem. Mein BMR multipliziert nicht mit dem bmrmult, den es benötigt. In der Tat, die Hälfte der Zeit, wenn ich den Knopf klicke, bekomme ich eine Ausgabe von 0. Ich weiß, dass etwas mit meiner Übung falsch sein muss, wenn Aussage, aber ich habe keine Ahnung was.

Heres der neue Code:

namespace WindowsFormsApplication9 
{ 
    public partial class calorieCalculator : Form 
    { 
     double malebmr, femalebmr, calories; 
     int bmrmult; 
     string gender, exercise; 
     double height, weight, age;//variables 

     public calorieCalculator() 
     { 
      InitializeComponent(); 
     } 

     private void calorieCalculator_Load(object sender, EventArgs e) 
     { 



     } 

     private void calculateButton_Click(object sender, EventArgs e) 
     { 



      //get personal information 
      height = double.Parse(heightTextBox.Text); 
      weight = double.Parse(weightTextBox.Text); 
      age = double.Parse(ageTextBox.Text); 
      //select gender 
      if (genderList.SelectedIndex != -1) 
      { 
       gender = genderList.SelectedItem.ToString(); 
       switch (gender) 
       { 
        case "Male": 
         //perform calculation 
         malebmr = (weight * 10 + height * 6.25 - age * 5 - 5); 
         calories = malebmr * bmrmult; 
         bmrDisplay.Text = ("Your base metabolic rate burns " + calories+ " calories"); 
         break; 
        case "Female": 
         femalebmr = weight * 10 + height * 6.25 - age * 5 - 161; 
         MessageBox.Show("You should eat:" + femalebmr + "calories"); 
         break; 
       } 
      } 
      if (exerciseList.SelectedIndex !=-1) 
      { 
       string exercise; 
       exercise = exerciseList.SelectedItem.ToString(); 
       switch (exercise) 
       { 
            case "Light exercise (1–3 days per week)": 
             bmrmult = (int)1.375m; 
           break; 
             case "Moderate exercise (3–5 days per week)": 
             bmrmult = (int)1.55m; 
             break; 
            case "Heavy exercise (6–7 days per week)": 
             bmrmult = (int)1.725m; 
             break; 
            case "Very heavy exercise (twice per day, extra heavy workouts)": 
             bmrmult = (int)1.9m; 
             break; 
       } 
      } 
     } 

Antwort

0

I "die Antwort aus der ersten Gleichung" glauben ist die BMR Person richtig?

Ein schneller Weg, um dies zu lösen, ist durch Ändern des Umfangs Ihrer und femalebmr Variablen.

Erklären Sie double malebmr, femalebmr; außerhalb Ihrer calculateButton_Click() Funktion sollten Sie sie in caloriesButton_Click() verwenden können.

+0

Sie haben Recht. Ich habe versucht, Ihren Ratschlag zu verwenden und diese Variablen sowie "bmrmult" verschoben. Dann habe ich versucht, die Formel in "Fall" Male "zu ändern: // Berechnung durchführen malebmr = Gewicht * 10 + Höhe * 6,25 - Alter * 5 * bmrmult - 5; bmrDisplay.Text = ("Ihre Grundumsatzrate brennt" + malebmr + "Kalorien"); Pause; 'Allerdings bekomme ich jetzt" Fehler CS0019 \t Operator '*' kann nicht auf Operanden vom Typ 'Doppel' und 'Dezimal' "angewendet werden. –

+0

Das ist eine kluge Idee. Jedoch kann ich immer noch nicht herausfinden, wie man die Anwendung anweist, die weibliche oder männliche BMR mit der Menge der Übung zu multiplizieren. Im Grunde kann ich nicht herausfinden, wie man die Antwort der Benutzer zurückholt und sie dann durch ihre Menge der Übung multipliziert. Ich habe ehrlich gesagt das Gefühl, dass meine ganze Logik in dieser Anwendung versaut ist. Ich wollte eine if-Anweisung machen, die definiert, um wie viel die BMR multipliziert werden muss. Da jedoch das Geschlecht die Antwort ändert, kann ich nicht herausfinden, wie ich diese Antwort in eine Variable umwandeln kann. Zumindest ... Ich denke, das versuche ich zu sagen. –

+0

was macht (int) 1.375m? Versuchen Sie, den Typ Double in Dezimal zu ändern, und bmrmult auch zu Dezimal – PTN