2017-04-06 40 views
0

我目前正在使用DateTime变量来查找各种日期之间的旅行成本的项目。大部分点击事件都会触发,但总价格和平均价格的计算不会运行。任何帮助,将不胜感激。C#while循环涉及DateTime变量不执行计算

下面的代码:将不会显示

private void btnCalculate_Click(object sender, EventArgs e) 
     { 
      DateTime arrival = DateTime.Parse(txtArrivalDate.Text); 
      DateTime departure = DateTime.Parse(txtDepartureDate.Text);      
      TimeSpan numDays = departure - arrival; 
      int ndays = numDays.Days; 
      txtNights.Text = ndays.ToString(); 
      decimal totalPrice = 0; 
      txtTotalPrice.Text = totalPrice.ToString("c"); 
      decimal avprice = totalPrice/ndays; 
      txtAvgPrice.Text = avprice.ToString("c"); 
      DateTime nightToCharge = arrival; 
      decimal pricePerNight = 0m; 
      int i = ndays; 
      while (i > 0) 
      { 
       DayOfWeek dayOfweek = nightToCharge.DayOfWeek; 
       if (dayOfweek == DayOfWeek.Friday || 
        dayOfweek == DayOfWeek.Saturday) 
       { 
        pricePerNight = 150m; 
       } 
       else 
       { 
        pricePerNight = 120m; 
       } 
       i--; 
       nightToCharge = nightToCharge.AddDays(1); 
       totalPrice += pricePerNight; 
      } 

     } 
+2

问题寻求帮助调试(“?为什么不是这个代码工作”)必须包括所期望的行为,一个具体问题或错误和在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者无益。请参阅:如何创建最小,完整和可验证示例。 –

+2

我可以告诉你已经有你的问题 - >'int ndays = numDays.Days;'。你需要使用'TotalDays'。使用,如果你仍然有问题转发问题与明确的问题 –

+1

它看起来像你正在计算'totalPrice',然后扔掉结果。在while循环后面添加'txtTotalPrice.Text = totalPrice.ToString()'。 – Aron

回答

0

你的价格,因为你设置前TextBox文本的价值,你计算价格。在计算总额之前,您还要设置平均价格。

只是计算平均值和while循环分配后的价格值:

​​3210
+0

谢谢你们。你解决了我的问题。 – Venomsamurai