计算器中的If-else命令

本文关键字:命令 If-else 计算器 | 更新日期: 2023-09-27 18:02:23

所以我现在正在为学校的一个项目制作计算器。计算器的作用是计算三角形。用户必须提供3条信息,2条边加1个角或2条角加1个边。

正如您在下面的代码中所看到的,我不知道如何继续我的项目。我对c#还是个新手。我要检查一下,如果A B c已经提供了,它必须计算这个,如果A B B已经提供了,它必须计算这个,等等。但是我不确定如何执行"if-else"命令。

  private void button1_Click(object sender, EventArgs e)
    {
        List<double> angles = new List<double>();
        List<double> sides = new List<double>();
        double A = (AAngle.Text == "") ? 0.00 : Convert.ToDouble(AAngle.Text);
        double B = (BAngle.Text == "") ? 0.00 : Convert.ToDouble(BAngle.Text);
        double C = (CAngle.Text == "") ? 0.00 : Convert.ToDouble(CAngle.Text);
        double a = (ASide.Text == "") ? 0.00 : Convert.ToDouble(ASide.Text);
        double b = (BSide.Text == "") ? 0.00 : Convert.ToDouble(BSide.Text);
        double c = (CSide.Text == "") ? 0.00 : Convert.ToDouble(CSide.Text);
        if (!(A == 0.00))
            angles.Add(A);
        if (!(B == 0.00))
            angles.Add(B);
        if (!(C == 0.00))
            angles.Add(C);
        if (!(a == 0.00))
            sides.Add(a);
        if (!(b == 0.00))
            sides.Add(b);
        if (!(c == 0.00))
            sides.Add(c);
        if ((angles.Count() == 2 && sides.Count == 1) || (angles.Count == 1 && sides.Count == 2))
        {
           if ???
        }
        else
        {
            MessageBox.Show("NOT ENOUGH OR TOO MANY SIDES/ANGLES PROVIDED OR NOT A VALID TRIANGLE");
        }
    }

计算器中的If-else命令

使用else if语句:

    if (angles.Count() == 2 && sides.Count == 1)
    {
       // calculate based on two angles and one side
    }
    else if (angles.Count == 1 && sides.Count == 2)
    {
       // calculate based on one angle and two sides
    }
    else
    {
       MessageBox.Show(...)
    }

你可以试试这里的c# if-else参考。

试着自己写代码。如果没有像预期的那样工作,请在这里跟进。

作为一种快速解决方案,我会将这两种情况分配给某个布尔值持有人并相应地采取行动:

var angles = (angles.Count >= 2 && sides.Count >= 1);
var sides = (angles.Count == 1 && sides.Count >= 2);
if (angles)
{ calculateTriangleFromAngles(); }
else if (sides)
{ calculateTriangleFromAngles(); }
else
{ MsgBox.... }

正如@user1012630所说,我使用>=来满足用户为角度和边提供两个以上的值…当然,如果用户为不可能三角形提供值,您应该添加一些边缘情况。

另一个旁注:不要使用Convert.ToDouble(),如果转换失败会抛出异常。

最好使用Double.TryParse()来获取值或优雅地失败。