Member 12651622 Ответов: 4

Получить уравнение в текстовое поле на языке Си


У меня есть форма. Чтобы рассчитать ИМТ (я знаю, что текущая форма не является тем, как это сделать)

Я все время получаю исключения.

Что я уже пробовал:

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 BmiPatientInfo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            string name = txtName.Text;
            decimal weight;
            decimal height;
            decimal bmi;

            weight = decimal.Parse(txtWeight.Text);
            height = decimal.Parse(txtHeight.Text);
            bmi = weight + height;

            bmi = decimal.Parse(txtBmi.Text);
        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}

Suvendu Shekhar Giri

Поделитесь подробностями исключения.

Patrice T

И вы собираетесь сказать нам, какие исключения ?

4 Ответов

Рейтинг:
2

CPallini

С Decimal.Parse может бросить, вы должны правильно поймать брошенное исключение (например, вызвать окно сообщения пользователю).

Между прочим

Цитата:
ИМТ = вес + рост;
Вы знаете, что это не правильная формула ИМТ.

Цитата:
ИМТ = десятичное.Синтаксический анализ(txtBmi.Текст);
Какова цель вычисления значения ИМТ, а затем немедленного переназначения его с помощью содержимого текстового поля?


Рейтинг:
1

Jochen Arndt

Вы не сказали нам, какое исключение выбрасывается.

Но для вашего опубликованного кода он, вероятно, выбрасывается при разборе строк для получения десятичных значений. Видеть Decimal. Parse Method (String) (System)[^] для исключений, которые могут быть брошены.

Существует также метод преобразования, который не вызывает выполнения, но предоставляет возвращаемое значение, указывающее, был ли синтаксический анализ успешным: Десятичный.Метод TryParse (Система)[^].

Вы можете использовать это вместо этого и показать какое-то сообщение, если синтаксический анализ не удался.


Рейтинг:
1

Karthik_Mahalingam

см. формулу для Расчет индекса массы тела или ИМТ[^]

обратитесь к этому образцу кода..

private void btnCalculateBMI_Click(object sender, EventArgs e)
       {
           decimal weight;
           decimal height;
           decimal bmi;

           if (!decimal.TryParse(txtWeight.Text, out weight)) { MessageBox.Show("Please enter valid weight"); return; }
           if (!decimal.TryParse(txtHeight.Text, out height)) { MessageBox.Show("Please enter valid height"); return; }

           // Apply the formula to calculate the BMI
           // assuming the height is in meter and weight in kg
           //refer the formula from http://extoxnet.orst.edu/faqs/dietcancer/web2/twohowto.html
           height = height * height;
           bmi = weight / height;
           txtBmi.Text = bmi;


       }


Рейтинг:
0

Richard MacCutchan

Не использовать decimal.Parse, использовать decimal.TryParse, таким образом, вы будете уведомлены, если преобразование не удастся. У вас также есть две линии:

bmi = weight + height;
 
bmi = decimal.Parse(txtBmi.Text);

Вы уверены, что вторая линия-это правильный путь? Или это должно быть что-то вроде:
txtBmi.Text = string.Format("BMI: {0}", bmi);