繁体   English   中英

缩短嵌套,如果与其他

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM