-11

所以我目前正在为学校项目制作计算器。计算器的重点是计算三角形。用户必须提供 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");
        }
    }
4

3 回答 3

1

使用这样的 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(...)
    }
于 2013-03-05T10:38:41.613 回答
0

您可以在此处尝试 C# if-else 参考。

尝试自己编写代码。如果它没有按预期工作,请在此处跟进。

于 2013-03-05T10:38:43.963 回答
0

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

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()用于获取价值或优雅地失败。

于 2013-03-05T10:44:41.750 回答