2012-01-07 64 views
2

我正在尝试制作一个小比萨订单,但我的计算有问题。选择披萨后,单价和总计算都可以,但选择添加会带来问题。更改NumericUpDown值后,卡路里不正确(所有单位都有不变的价格和卡路里)。 NumericUpDown的名字是numberofunit。我如何计算它们?如何使用NumericUpDown计算文本框值的总和?

if (pepper.Checked) 
{ 
    string peppereklendi = 
     Convert.ToString(Convert.ToDouble(unitprice.Text)+ pepperprice); 

    unitprice.Text = peppereklendi; 

    total.Text = 
     Convert.ToString(Convert.ToDecimal(unitprice.Text) * numberofunit.Value); 

    string pepperkaloriekle = 
     Convert.ToString(Convert.ToInt16(gizlikalori.Text) + pepperkalori); 

    gizlikalori.Text = pepperkaloriekle; 

    amountofcalorie.Text = 
     Convert.ToString(Convert.ToDecimal(gizlikalori.Text) * numberofunit.Value); 
} 
else 
{ 
    string peppereklendi = unitprice.Text; 

    unitprice.Text = 
     Convert.ToString(Convert.ToDouble(peppereklendi) - pepperprice); 

    total.Text = Convert.ToString(Convert.ToDecimal(unitprice.Text) * numberofunit.Value); 

    string pepperkaloriekle = gizlikalori.Text; 

    gizlikalori.Text = 
     Convert.ToString(Convert.ToDouble(pepperkaloriekle) - pepperkalori); 

    amountofcalorie.Text = 
     Convert.ToString(Convert.ToDecimal(gizlikalori.Text) * numberofunit.Value); 
} 

本准则是辣椒的复选框代码。

This is the form of my application.

+1

这功课? – 2012-01-07 21:43:51

+0

@MikeW是关于比萨计算的作业,我在c#中相当新颖# – 2012-01-07 22:23:36

+0

@ user1136403将来,请用'家庭作业'标记作业问题 - 它清楚你要问什么和为什么。谢谢 – Basic 2012-01-08 01:57:43

回答

6

你真的应该尝试的计算逻辑从UI逻辑(形式)分离。那么事情会变得更加清晰:

// Get values from the text boxes 
decimal up = Convert.ToDecimal(unitprice.Text); 
decimal calories = Convert.ToDecimal(gizlikalori.Text); 
decimal tot, totCalories; 

// Do the calculation 
if (pepper.Checked) { 
    up = up + pepperprice; 
    calories = calories + pepperkalori; 
} 
tot = up * numberofunit.Value; 
totCalories = calories * numberofunit.Value; 

// Assign the results to text boxes 
unitprice.Text = up.ToString(); 
total.Text = tot.ToString(); 
gizlikalori.Text = calories.ToString(); 
amountofcalorie.Text = totCalories.ToString(); 

你做错了,什么是你减去从单价辣椒价格和胡椒卡路里和单位的热量,如果没有选择胡椒。然而,单价(和卡路里)已经没有胡椒了!

我没有看到你什么时候进行这个计算,但是如果你在每次增加单位数时执行它,那么你就会每次都加入胡椒价格!当您检查添加项时,对于基本单位价格有一个单独的变量保持不变会更好。然后始终从基本单位价格开始计算。

此外,您正在混合许多不同的数字类型。这没有意义。

更进一步增强代码的下一步是为计算创建一个单独的类。你也可以使用数据绑定。这将彻底消除做转换的需要。看到我对以下帖子的回答 :manipulating-textbox-variables-in-calculations

+0

谢谢我现在尝试它 – 2012-01-07 22:12:11

+1

如果它适合你,请将Olivier的答案标记为已接受。 – 2012-01-08 00:40:32

+0

@GarryVass我认为他仍然在接受答案的新用户超时。 – Basic 2012-01-08 01:59:36