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)
简而言之,int totalPrice = price * nights;应删除此行,并在while循环中price += 120或price += 150在每个条件中删除.totalPrice可以简单地替换为price.
你没有price在while循环中使用set.price设置为120或150但随后被下一个值覆盖(之前的值被完全忽略).因此,一旦您的代码退出while循环,将使用最新的price集合并乘以总夜数.
所以你的代码正在做的是price在最后一天(在这种情况下为2016年2月1日)并将其乘以总夜数.它应该做的是保持price循环内的总计.