if语句C#中的2个值

时间:2019-02-21 20:22:43

标签: c#

在给定的收缩压和舒张压值范围内,血压应该正常计算

        private void txtBPDiastolic_Validating(object sender, CancelEventArgs e)
    {
        try
        {
            int systolic, diastolic;
            systolic = int.Parse(txtBPSystolic.Text);
            diastolic = int.Parse(txtBPDiastolic.Text);
            if (systolic <= 120)
            {
                if (diastolic <= 80)
                {
                    txtbpStat.Text = "Normal";
                }

            }

            else if (systolic < 120 && systolic >= 129)
            {
                if (diastolic < 80)
                {
                    txtbpStat.Text = "Elevated";
                }

            }

            else if (systolic <= 130 && systolic >= 139 )
            {
                if (diastolic <= 80 && diastolic >= 89)
                {
                    txtbpStat.Text = "Highblood (Stage1)";
                }

            }

            else if (systolic >= 140)
            {
                if (diastolic >= 90)
                {
                    txtbpStat.Text = "Highblood (Stage2)";
                }

            }

            else if (systolic > 180)
            {
                if (diastolic > 120)
                {
                    txtbpStat.Text = "Hypertensive Crisis";
                }

            }
        }
        catch (FormatException)
        {

            MessageBox.Show("Input Valid values");
        }
    }

如果我有2个变量,则无法正确计算

它无法读取“正常”以外的其他结果,并忽略了结果的其余选项

2 个答案:

答案 0 :(得分:0)

请仔细查看if语句中的条件,因为其中许多条件是无法满足的。例如,第二个条件:

else if (systolic < 120 && systolic >= 129)

一个值不能同时小于120和大于129,因此此条件永远不会返回true

许多检查中的第二条if语句表示,即使收缩压读数满足条件,舒张压也可能不满足,这意味着状态永远不会改变(例如sys 150,dia 85)。 >

答案 1 :(得分:0)

这里有多个问题: 1)您的<=和> =需要在每个if语句中颠倒。 2)永远不会到达最后一个else子句,因为将满足else上面的条件。 3)嵌套的if应该合并。您可能会遇到外在而不是内在而无所事事,或者您可能会遇到内在而不是外在而打印出错误的东西。