为什么会从我的列表中提取错误的数据?

问题描述 投票:0回答:1

我有一个简单的表格。我正在处理六个不同的数字范围,例如 0-1.57、1.57-6.35、6.35-12.7 等。

根据所选的类别 A、B、C 等,它会为每个范围返回不同的公差。每个类别的公差都在单独的列表中。

它的工作原理如下:“如果(选择了这个和这个),则使用此列表,否则,如果(选择了这个和这个),则使用另一个列表。

我的第一个范围正常工作,准确地从列表中提取数字。第二类的五个范围可以正常工作,但该类中的最后一个范围不会返回正确的容差。当它应该从 5 号位置抓取它时,它不断地抓取 4 号位置的公差。

这没什么奇怪的,我相信你会看到更好的方法来做到这一点,但我只是想学习不同的东西。

最后十一行粗体是未返回正确结果的行。它不断返回 B 类列表中 [4] 的结果,而不是数字 [5],但是,A 类列表工作正常。

namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private List<Double> ClassAPlus = new List<Double> { 0.080, 0.130, 0.150, 0.200, 0.250, 0.250 };
        private List<Double> ClassAMinus = new List<Double> { 0.030, 0.050, 0.080, 0.100, 0.100, 0.130 };

        private List<Double> ClassBPlus = new List<Double> { 0.080, 0.250, 0.300, 0.400, 0.500, 0.500 };
        private List<Double> ClassBMinus = new List<Double> { 0.030, 0.100, 0.100, 0.150, 0.150, 0.250 };
        private void btnEnter_Click(object sender, EventArgs e)
        {
            double Diameter, Plus, Minus, Nominal, Tolerance;
            if (double.TryParse(txtSize.Text, out Diameter)) ;

            if (rbA.Checked == true && rbMetric.Checked == true)
                if (Diameter <= 1.57)
                {
                    Plus = (Diameter + ClassAPlus[0]);
                    Minus = (Diameter - ClassAMinus[0]);
                    Nominal = (Plus + Minus) / 2;
                    Tolerance = Plus - Nominal;
                    lblResult.Text = Nominal.ToString("0.000") + "  ±" + Tolerance.ToString("0.000");
                    lblBilat.Text = Diameter.ToString("0.000") + "  +" + ClassAPlus[0].ToString("0.000") + " /- " + ClassAMinus[0].ToString("0.000");
                    lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
                }
            if (Diameter > 1.57 || Diameter == 6.35)
            {
                Plus = (Diameter + ClassAPlus[1]);
                Minus = (Diameter - ClassAMinus[1]);
                Nominal = (Plus + Minus) / 2;
                Tolerance = Plus - Nominal;
                lblResult.Text = Nominal.ToString("0.000") + "  ±" + Tolerance.ToString("0.000");
                lblBilat.Text = Diameter.ToString("0.000") + "  +" + ClassAPlus[1].ToString("0.000") + " /- " + ClassAMinus[1].ToString("0.000");
                lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
            }
            if (Diameter > 6.35 || Diameter == 12.7)
            {
                Plus = (Diameter + ClassAPlus[2]);
                Minus = (Diameter - ClassAMinus[2]);
                Nominal = (Plus + Minus) / 2;
                Tolerance = Plus - Nominal;
                lblResult.Text = Nominal.ToString("0.000") + "  ±" + Tolerance.ToString("0.000");
                lblBilat.Text = Diameter.ToString("0.000") + "  +" + ClassAPlus[2].ToString("0.000") + " /- " + ClassAMinus[2].ToString("0.000");
                lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
            }
            if (Diameter > 12.7 || Diameter == 19.05)
            {
                Plus = (Diameter + ClassAPlus[3]);
                Minus = (Diameter - ClassAMinus[3]);
                Nominal = (Plus + Minus) / 2;
                Tolerance = Plus - Nominal;
                lblResult.Text = Nominal.ToString("0.000") + "  ±" + Tolerance.ToString("0.000");
                lblBilat.Text = Diameter.ToString("0.000") + "  +" + ClassAPlus[3].ToString("0.000") + " /- " + ClassAMinus[3].ToString("0.000");
                lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
            }
            if (Diameter > 19.05 || Diameter == 25.4)
            {
                Plus = (Diameter + ClassAPlus[4]);
                Minus = (Diameter - ClassAMinus[4]);
                Nominal = (Plus + Minus) / 2;
                Tolerance = Plus - Nominal;
                lblResult.Text = Nominal.ToString("0.000") + "  ±" + Tolerance.ToString("0.000");
                lblBilat.Text = Diameter.ToString("0.000") + "  +" + ClassAPlus[4].ToString("0.000") + " /- " + ClassAMinus[4].ToString("0.000");
                lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
            }
            if (Diameter > 25.4)
            {
                Plus = (Diameter + ClassAPlus[5]);
                Minus = (Diameter - ClassAMinus[5]);
                Nominal = (Plus + Minus) / 2;
                Tolerance = Plus - Nominal;
                lblResult.Text = Nominal.ToString("0.000") + "  ±" + Tolerance.ToString("0.000");
                lblBilat.Text = Diameter.ToString("0.000") + "  +" + ClassAPlus[5].ToString("0.000") + " /- " + ClassAMinus[5].ToString("0.000");
                lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
            }
            else
            {
                if (rbB.Checked == true && rbMetric.Checked == true)
                {
                    if (Diameter <= 1.57)
                    {
                        Plus = (Diameter + ClassBPlus[0]);
                        Minus = (Diameter - ClassBMinus[0]);
                        Nominal = (Plus + Minus) / 2;
                        Tolerance = Plus - Nominal;
                        lblResult.Text = Nominal.ToString("0.000") + "  ±" + Tolerance.ToString("0.000");
                        lblBilat.Text = Diameter.ToString("0.000") + "  +" + ClassBPlus[0].ToString("0.000") + " /- " + ClassBMinus[0].ToString("0.000");
                        lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
                    }
                    if (Diameter > 1.57 || Diameter == 6.35)
                    {
                        Plus = (Diameter + ClassBPlus[1]);
                        Minus = (Diameter - ClassBMinus[1]);
                        Nominal = (Plus + Minus) / 2;
                        Tolerance = Plus - Nominal;
                        lblResult.Text = Nominal.ToString("0.000") + "  ±" + Tolerance.ToString("0.000");
                        lblBilat.Text = Diameter.ToString("0.000") + "  +" + ClassBPlus[1].ToString("0.000") + " /- " + ClassBMinus[1].ToString("0.000");
                        lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
                    }
                    if (Diameter > 6.35 || Diameter == 12.7)
                    {
                        Plus = (Diameter + ClassBPlus[2]);
                        Minus = (Diameter - ClassBMinus[2]);
                        Nominal = (Plus + Minus) / 2;
                        Tolerance = Plus - Nominal;
                        lblResult.Text = Nominal.ToString("0.000") + "  ±" + Tolerance.ToString("0.000");
                        lblBilat.Text = Diameter.ToString("0.000") + "  +" + ClassBPlus[2].ToString("0.000") + " /- " + ClassBMinus[2].ToString("0.000");
                        lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
                    }
                    if (Diameter > 12.7 || Diameter == 19.05)
                    {
                        Plus = (Diameter + ClassBPlus[3]);
                        Minus = (Diameter - ClassBMinus[3]);
                        Nominal = (Plus + Minus) / 2;
                        Tolerance = Plus - Nominal;
                        lblResult.Text = Nominal.ToString("0.000") + "  ±" + Tolerance.ToString("0.000");
                        lblBilat.Text = Diameter.ToString("0.000") + "  +" + ClassBPlus[3].ToString("0.000") + " /- " + ClassBMinus[3].ToString("0.000");
                        lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
                    }
                    if (Diameter > 19.05 || Diameter == 25.4)
                    {
                        Plus = (Diameter + ClassBPlus[4]);
                        Minus = (Diameter - ClassBMinus[4]);
                        Nominal = (Plus + Minus) / 2;
                        Tolerance = Plus - Nominal;
                        lblResult.Text = Nominal.ToString("0.000") + "  ±" + Tolerance.ToString("0.000");
                        lblBilat.Text = Diameter.ToString("0.000") + "  +" + ClassBPlus[4].ToString("0.000") + " /- " + ClassBMinus[4].ToString("0.000");
                        lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
                    }
                    **if (Diameter > 25.4)
                    {
                        Plus = (Diameter + ClassBPlus[5]);
                        Minus = (Diameter - ClassBMinus[5]);
                        Nominal = (Plus + Minus) / 2;
                        Tolerance = Plus - Nominal;
                        lblResult.Text = Nominal.ToString("0.000") + "  ±" + Tolerance.ToString("0.000");
                        lblBilat.Text = Diameter.ToString("0.000") + "  +" + ClassBPlus[5].ToString("0.000") + " /- " + ClassBMinus[5].ToString("0.000");
                        lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");**
                    };
                }
            }
        }
    }
}
c# winforms
1个回答
0
投票

这种情况对我来说看起来很奇怪

 if (Diameter > 1.57 || Diameter == 6.35)

你肯定想要一个

<=

 if (Diameter > 1.57 || Diameter <= 6.35)
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.