2012-01-07 49 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