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;
}
问题是你减去 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;
...
}