C#为什么我的计算没有正确添加?

pyu*_*tae 0 c# datetime while-loop

我正在制作一个计算预订日期的表格.在周五和周六,一个房间的费用为150美元,而在剩余的日子里,费用为120美元.我已经使用了一个while循环来设置它,但由于某种原因,它一直在计算错误的价格.

应该是什么样的:

在此输入图像描述

它看起来像什么:

在此输入图像描述

这是我的代码:

int nights = 0;
int price = 0;

private void btnCalculate_Click(object sender, EventArgs e)
    {
        DateTime arrivalDate = DateTime.Parse(txtArrivalDate.Text);
        DateTime departureDate = DateTime.Parse(txtDepartureDate.Text);
        TimeSpan ts = departureDate.Subtract(arrivalDate);
        nights = ts.Days;

        while (arrivalDate != departureDate)
        {
            DayOfWeek dow = arrivalDate.DayOfWeek;
            if (dow == DayOfWeek.Friday || 
                dow == DayOfWeek.Saturday)
            {
                price = 150;
            }
            else
            {
                price = 120;
            }

            arrivalDate = arrivalDate.AddDays(1);

        }

        txtNights.Text = nights.ToString();
        int totalPrice = price * nights;
        txtTotalPrice.Text = totalPrice.ToString();
        int average = totalPrice / nights;
        txtAvgPrice.Text = average.ToString();
        txtArrivalDate.Focus();
    }
Run Code Online (Sandbox Code Playgroud)

Biv*_*aju 5

简而言之,int totalPrice = price * nights;应删除此行,并在while循环中price += 120price += 150在每个条件中删除.totalPrice可以简单地替换为price.

你没有price在while循环中使用set.price设置为120或150但随后被下一个值覆盖(之前的值被完全忽略).因此,一旦您的代码退出while循环,将使用最新的price集合并乘以总夜数.

所以你的代码正在做的是price在最后一天(在这种情况下为2016年2月1日)并将其乘以总夜数.它应该做的是保持price循环内的总计.