我正在嘗試從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 沒有變成負數。實際結果:價值轉為負數。
2 回答

拉風的咖菲貓
TA貢獻1995條經驗 獲得超2個贊
Math.Max()您可以在執行算術的行中將零指定為可能的最低值:
Holidays_Number_lbl.Text = (Math.Max(rdays - days, 0)).ToString();
但是,您要先轉換為字符串,然后再轉換回數字。這樣的事情將消除對int.Parse:
...
int Holidays_Number = Math.Max(rdays - days, 0);
Holidays_Number_lbl.Text = Holidays_Number.ToString();
if ((Holidays_Number > min) && (Holidays_Number < max))
{
...

MYYA
TA貢獻1868條經驗 獲得超4個贊
此行int Holidays_Number = int.Parse(Holidays_Number_lbl.Text);
正在設置 的值Holidays_Number
。if
然后下一行用語句檢查它。但是該if
語句不會更改值,它只是檢查它。因此,如果它低于 0,它將保持在 0 以下。
- 2 回答
- 0 關注
- 118 瀏覽
添加回答
舉報
0/150
提交
取消