在我在用戶端通過 20 后,我的 if/else 不會選擇等式的下一個變體。我知道它是因為設定了 total = (numberofchecks * twinchecks) (fee); 但我不知道用什么來讓它移動到方程的下一個變體。負數、超過 1000 和格式例外有效。
總計 =(檢查次數 * 二十次檢查) (費用);
TotalLabel.Text = total.ToString("C");
// if else (5 or 6)
if ( numberofchecks < 20 && numberofchecks == 0)
{
total = (numberofchecks * twentychecks) (fee);
}
else if ( numberofchecks < -1)
{
MessageBox.Show("Number of checks must be between 0 and 1000");
}
else if (numberofchecks == 20 && numberofchecks <= 39)
{
total = (numberofchecks * thirtyninechecks) (fee);
}
else if (numberofchecks == 40 && numberofchecks <= 59)
{
total = (numberofchecks * fiftyninechecks) (fee);
}
else if (numberofchecks == 60 && numberofchecks <=1000)
{
total = (numberofchecks * thousandchecks) (fee);
}
else if (numberofchecks > 1000)
{
MessageBox.Show("Number of checks must be between 0 and 1000");
}
}
catch(FormatException )
{
MessageBox.Show(" Please enter a number");
}

uj5u.com熱心網友回復:
首先,我們只看您的一個 if 陳述句,我們看到以下內容
else if (numberofchecks == 20 && numberofchecks <= 39)
那么如果numberofchecks等于 20,那么它總是 <= 39,所以第二部分是多余的。這對你所有的陳述都是一樣的。
我認為你的真正意思是
else if (numberofchecks >= 20 && numberofchecks <= 39)
然后,這將使它更合乎邏輯。
這應該可以解決您的直接問題。但我們可以進一步改進它。
通常最好先檢查輸入的資料是否有效。所以這應該首先完成。您甚至可以將其移至另一種方法。(如果您要執行大量驗證,則很有用)。然后你可以執行你的計算
if ( numberofchecks < -1 || numberofchecks > 1000)
{
MessageBox.Show("Number of checks must be between 0 and 1000");
}
else
{
//Rest here
}
但如果您使用 C#9 或更高版本,您實際上可以將 if 陳述句移動到支持范圍的 switch 陳述句。在這種情況下,我們也可以對無效資料使用默認情況。
switch (numberofchecks)
{
case >= 0 and < 20:
total = (numberofchecks * twentychecks) (fee);
break;
case >= 20 and <= 39:
total = (numberofchecks * thirtyninechecks) (fee);
break;
case >= 40 and < 59:
total = (numberofchecks * fiftyninechecks) (fee);
break;
case >= 60 and < 1000:
total = (numberofchecks * thousandchecks) (fee);
break;
default:
MessageBox.Show("Number of checks must be between 0 and 1000");
break;
}
uj5u.com熱心網友回復:
查看代碼,似乎條件設定不正確。
更好的條件設定是始終首先檢查不適當的情況。
因此,以下檢查范圍可以縮小到有效范圍。
// Check inappropriate cases first to reduce the scope of other checks
if (numberofchecks < 0 || numberofchecks >= 1000) {
MessageBox.Show("Number of checks must be between 0 and 1000");
} else {
// Guess you don't want 20 to satisfy the twentychecks as well?
if (numberofchecks < 20) {
// cases: 0 to 19
total = (numberofchecks * twentychecks) (fee);
} else if (numberofchecks < 40) {
// cases: 20 to 39
total = (numberofchecks * thirtyninechecks) (fee);
} else if (numberofchecks < 60) {
// cases: 40 to 59
total = (numberofchecks * fiftyninechecks) (fee);
} else {
// cases: 60 to 999
total = (numberofchecks * thousandchecks) (fee);
}
TotalLabel.Text = total.ToString("C");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/457699.html
上一篇:“Keyerror”-遍歷Dataframe中的每個元素
下一篇:嘗試運行程式時出現語法錯誤
