[英]Shorten nested if with else
作业问题。 我构建了一个应用程序,可让您计算折扣金额。
3个单选按钮。
rb_korting5 = 5% discount
rb_korting10 = 10% discount
rb_korting15 = 15% discount
如果您年满65岁,则可获得+10的额外折扣。
如果需要,我需要使用其他代码来缩短以下代码。 我已经尝试过了,但它总是使计算混乱。
public void button_Click(object sender, RoutedEventArgs e)
{
DateTime todate = DateTime.Today;
int CurrentYear = todate.Year;
int price = Convert.ToInt32(tb_Price.Text);
int ammount = Convert.ToInt32(tb_Ammount.Text);
double result = Convert.ToDouble(price * ammount);
int dob = Convert.ToInt32(tb_dob.Text);
int age = Convert.ToInt32(CurrentYear - dob);
if ((rbkorting5.IsChecked == true) && ( age >= 65))
{
result = result * 0.05 + 10;
}
if ((rbkorting5.IsChecked == true) && (age < 65))
{
result = result * 0.05;
}
if ((rbkorting10.IsChecked == true) && (age >= 65))
{
result = result * 0.10 + 10;
}
if ((rbkorting15.IsChecked == true) && (age >= 65))
{
result = result * 0.15 + 10;
}
if ((rbkorting10.IsChecked == true) && (age < 65))
{
result = result * 0.10;
}
if ((rbkorting15.IsChecked == true) && (age < 65))
{
result = result * 0.15;
}
lb_result.Content = result;
}
您可以将年龄大于等于65岁的条件分组,并为这些条件计算折扣,在其他部分,为年龄小于65岁的条件计算折扣
同样,在计算折扣时,请使用单独的变量,然后从总额中减去该变量。
public void button_Click(object sender, RoutedEventArgs e)
{
DateTime todate = DateTime.Today;
int CurrentYear = todate.Year;
int price = Convert.ToInt32(tb_Price.Text);
int ammount = Convert.ToInt32(tb_Ammount.Text);
int dob = Convert.ToInt32(tb_dob.Text);
int age = Convert.ToInt32(CurrentYear - dob);
double result = Convert.ToDouble(price * ammount);
double discount = 0d;
if (age >= 65)
{
if (rbkorting5.IsChecked)
discount = result * 0.05 + 10;
else if (rbkorting10.IsChecked)
discount = result * 0.10 + 10;
else if (rbkorting15.IsChecked)
discount = result * 0.15 + 10;
}
else
{
if (rbkorting5.IsChecked))
discount = result * 0.05;
else if (rbkorting10.IsChecked)
discount = result * 0.10;
else if (rbkorting15.IsChecked)
discount = result * 0.15;
}
lb_result.Content = result - discount;
}
public void button_Click(object sender, RoutedEventArgs e)
{
DateTime todate = DateTime.Today;
int CurrentYear = todate.Year;
int price = Convert.ToInt32(tb_Price.Text);
int ammount = Convert.ToInt32(tb_Ammount.Text);
int dob = Convert.ToInt32(tb_dob.Text);
int age = Convert.ToInt32(CurrentYear - dob);
double result = Convert.ToDouble(price * ammount);
lb_result.Content = SubstractDiscount(result);
}
private double SubstractDiscount(double amount)
{
double discount = 1;
double additionalAgeDiscount = 0;
if(rbkorting5.IsChecked)
discount = 0.05;
if(rbkorting10.IsChecked)
discount = 0.10;
if(rbkorting15.IsChecked)
discount = 0.15;
if(age >= 65)
additionalAgeDiscount = 10;
return amount * discount + additionalAgeDiscount;
}
您可以根据折扣和年龄来组织代码如下:
private void button1_Click(object sender, EventArgs e)
{
DateTime todate = DateTime.Today;
int CurrentYear = todate.Year;
int price = Convert.ToInt32(tb_Price.Text);
int ammount = Convert.ToInt32(tb_Ammount.Text);
double result = Convert.ToDouble(price * ammount);
int dob = Convert.ToInt32(tb_dob.Text);
int age = Convert.ToInt32(CurrentYear - dob);
if (rbkorting5.Checked == true) {
if (age >= 65) result = result * 0.05 + 10;
else result = result * 0.05;
}
else if(rbkorting10.Checked == true) {
if (age >= 65) result = result * 0.1 + 10;
else result = result * 0.1;
}
else if(rbkorting15.Checked == true) {
if (age >= 65) result = result * 0.15 + 10;
else result = result * 0.15;
}
lb_result.Content = result; //==> return discount result
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.