c# 每日卡路里摄入量计算器

c# Daily Calorie Intake Calculator

我是编码新手,我正在尝试制作一个应用程序,根据他们的性别、身高、体重和运动量计算一个人的 基础代谢率 。该应用程序应采用所提供的信息和 运行 基于性别的方程式来计算其 BMR。接下来,它应该取此人的 BMR 并根据此人锻炼的频率乘以该值。到目前为止,我已经能够使应用程序 运行 成为基于性别的不同方程式。但是,我无法让应用程序从第一个等式中获取答案并将其乘以所行使的金额。如果我的描述不够具体,我深表歉意。我对编码很陌生,真的不知道自己在做什么。

感谢任何帮助。这是我的代码:

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;
                }
            }
        }
    }
}

编辑:我试图修改我的代码并取消我的第二个按钮。但是,现在我遇到了一个全新的问题。我的 BMR 没有乘以它需要的 bmrmult。事实上,当我点击按钮时,有一半时间我得到的输出为 0。我知道我的练习 if 语句一定有问题,但我不知道是什么。

这是新代码:

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;
                }
            }
        }

我相信 "the answer from the first equation" 这个人的 BMR 正确吗?

解决此问题的一种快速方法是更改​​ malebmrfemalebmr 变量的范围。

calculateButton_Click() 函数之外声明 double malebmr, femalebmr; 应该允许您在 caloriesButton_Click() 中使用它们。