计算放入标签的变更资金

时间:2014-01-06 14:04:17

标签: c#

我必须在标签中放置多个整数。有时一个,有时两个或更多,取决于计算。 这是改变货币的计算,它是必须在标签中显示的硬币值的数量。 例如:1 x€1,00 + 2 x€0,20 + 1 x€0,05 其中1,2和1是货币变动计算的总和。变更金钱必须尽可能少。 现在我的代码有一个while循环和一个label.content = ----------每次但是我知道如果第二个或者一个也给出了它,它总是显示最后的结果标签。 我怎样才能以最简单的方式解决这个问题? 提前谢谢!

    private void btnBuy_Click(object sender, RoutedEventArgs e)
    {


        if (given < cost)
            lblAction.Content = "Not enough money";
        else
        {
            change = (given - cost);
            lblChange.Content = "Terug: € " + change;
            lblReport.Content = "Take";
            lblAction.Content = "Take your beverage";
            btnTakeBeverage.IsEnabled = true;
        }


        while (change >= 1M)
        {
            oneEuro++;
            change -= 1M;
            if (oneEuro > 0)
               lblCalculatingchange.Content = oneEuro + " x € 1,00";
        }
        while (change >= 0.50M)
        {
            fiftyEurocent++;
            change -= 0.50M;
            if (fiftyEurocent > 0)
                 lblCalculatingchange.Content = fiftyEurocent + " x € 0,50";
        }
        while (change >= 0.20M)
        {
            twentyEurocent++;
            change -= 0.20M;
            if (twentyEurocent > 0)
                 lblCalculatingchange.Content = twentyEurocent + " x € 0,20";
        }
        while (change >= 0.10M)
        {
            tenEurocent++;
            change -= 0.10M;
            if (tenEurocent > 0)
                lblCalculatingchange.Content = tenEurocent + " x € 0,10";
        }
        while (change >= 0.05M)
        {
            fiveEurocent++;
            change -= 0.05M;
            if (fiveEurocent > 0)
                 lblCalculatingchange.Content = fiveEurocent + " x € 0,05";
        }

1 个答案:

答案 0 :(得分:2)

每次计算新部分时,您都会覆盖标签的上一个值。正确的方法是在标签的文字中添加新的部分:

lblCalculatingchange.Content += fiftyEurocent + " x € 0,50";

甚至更好 - 您可以使用StringBuilder

StringBuilder text = new StringBuilder();
...
text.Append(oneEuro + " x € 1,00");
...
text.Append(fiftyEurocent + " x € 0,50");
...

// all calculations done
lblCalculatingchange.Content = text.ToString();

更新。另一个,在评论中建议 - 这允许您添加&#34; +&#34;迹象:

List<string> tokens = new List<string>();
...
tokens.Add(oneEuro + " x € 1,00");
...
tokens.Add(fiftyEurocent + " x € 0,50");
...

// all calculations done
lblCalculatingchange.Content = string.Join(" + ", tokens);