C# 没有正确减去我的值

本文关键字:我的 | 更新日期: 2023-09-27 17:57:10

我有一个设置值和一个用户输入文本框,我将其设置为仅数字输入,然后将其转换为整数,这一切都有效,但是当我运行代码并输入小于设置值的数字时,它无法正常工作

TL:DR

(设置值 20,用户输入值 12,代码返回 -4)

private void LSum_Load(object sender, EventArgs e)
    {
        PassengersTXT.Text = LEFcPassanger.sendtext;
        DepartDateTXT.Text = LutonDepart.sendtext;
        DepTimeTXT.Text = LutonSat.sendtext;
        TravelTypeTXT.Text = LEClass.sendtext;
        DepartTXT.Text = Form2.sendtext;
        ArriveTXT.Text = LArrive.sendtext;
    }
if( TravelTypeTXT.Text == "First Class")
        {
            Seating.FirstClass -= Convert.ToInt32(PassengersTXT.Text);
            if (Seating.FirstClass <= 0)
            {
                MessageBox.Show("Not Enough Seats in First Class", "ERROR!",
                MessageBoxButtons.OK, MessageBoxIcon.Error);
                LEFcPassanger form = new LEFcPassanger();
                form.Show();
                this.Close();
            }
            else
            {
                Seating.FirstClass -= Convert.ToInt32(PassengersTXT.Text);
                AppFin frm = new AppFin();
                frm.Show();
                this.Close();
            }

//seperate class
class Seating
{
    public static int FirstClass = 20;
    public static int BusinessClass = 36;
    public static int EconomyClass = 84;
    public static int TotalSeats = 140;
}

C# 没有正确减去我的值

问题是你减去 12 两次 - 一次在 if 之前,一次在else分支内。

与其立即使用-=,不如使用 - 比较值,如下所示:

var passengers = Convert.ToInt32(PassengersTXT.Text);
if (Seating.FirstClass-passengers < 0) { // Do not modify FirstClass yet
    ...
} else {
    // Now that we know that it's OK, apply modifications
    Seating.FirstClass -= passengers;
    ...
}