如何防止 int 在减去后变为负数

我正在尝试从int具有设定值的值中减去一个值。一旦它达到 0 并且我从中减去更多,该值变为负数。


我想如果我使用if-else语句来检查该值是否低于 0,它会阻止该值变为负值。但是价值会变成负数。如何防止该值进入负值范围?


        {

            DateTime start = dateTimePicker2.Value.Date;

            DateTime end = dateTimePicker1.Value.Date;


            TimeSpan difference = end - start;


            int days = difference.Days;

            int min = 0;

            int max = 21;

            int rdays = Convert.ToInt32(Holidays_Number_lbl.Text);

            Holidays_Number_lbl.Text = (rdays - days).ToString();


            int Holidays_Number = int.Parse(Holidays_Number_lbl.Text);

            if ((Holidays_Number > min)  && (Holidays_Number < max))

            {

                MessageBox.Show("Holidays have been counted");

            }

            else

            {

                MessageBox.Show(" You have exceeded your 21 holidays  ");//value goes into the minus ?

            }

        }

预期结果:出现 MessageBox 说你已经超过了你的天数,并且 value 没有变成负数。


实际结果:价值转为负数。


30秒到达战场
浏览 84回答 2
2回答

拉风的咖菲猫

Math.Max()您可以在执行算术的行中将零指定为可能的最低值:Holidays_Number_lbl.Text = (Math.Max(rdays - days, 0)).ToString();但是,您要先转换为字符串,然后再转换回数字。这样的事情将消除对int.Parse:...&nbsp;int Holidays_Number = Math.Max(rdays - days, 0);&nbsp;Holidays_Number_lbl.Text = Holidays_Number.ToString();&nbsp;if ((Holidays_Number > min)&nbsp; && (Holidays_Number < max))&nbsp;{...

MYYA

此行int Holidays_Number = int.Parse(Holidays_Number_lbl.Text);正在设置 的值Holidays_Number。if然后下一行用语句检查它。但是该if语句不会更改值,它只是检查它。因此,如果它低于 0,它将保持在 0 以下。
打开App,查看更多内容
随时随地看视频慕课网APP