C#计算不正确

时间:2015-04-24 23:35:38

标签: c#

当我运行代码时,它不会计算,也不会显示计算结果。 想知道我的变量或其他东西是错误的还是在错误的地方。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Question_3_Retail_Price_Calculator
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            decimal costPrice = 0;
            decimal markUpRateA = 0.19m;
            decimal markUpRateB = 0.14m;
            decimal markUpRateC = 0.12m;
            decimal markUpRate = 0m;
            decimal markUpTotal = 0;
            decimal totalCost = 0;

            // Add the items to ListBox 1
            listBox1.Items.Add("Markup Rate =");
            listBox1.Items.Add("Markup Total =");
            listBox1.Items.Add("Total Cost =");

            try
            {
                // Read the cost price from the user
                costPrice = decimal.Parse(textBox1.Text);

            }
           catch (System.Exception excep )
             {
                 MessageBox.Show(excep.Message);
             }

                if (costPrice <= 50)
                {
                    // Calculate the value of  the product 
                    costPrice = (costPrice / 100) * markUpRateA;  
                }
                else if (costPrice >= 50 && costPrice < 100)
                {
                    //  Calculate the value of the product
                    costPrice = (costPrice / 100) * markUpRateB;
                }
                else if (costPrice < 100)
                {
                    // Calculate the value of the product
                    costPrice = (costPrice / 100) * markUpRateC;
                }
                else if (markUpRate == markUpTotal)
                {
                    // Calculate the total monetary amount
                    markUpTotal = costPrice * markUpRate;
                }
                else
                {
                    // Calculate the Total Cost  of the product
                    totalCost = costPrice + markUpTotal;
                }
                // Output the total Cost
                MessageBox.Show("Total Cost is: €"  + totalCost);
            }
    }
}

需要一些帮助来解决这个问题!提前谢谢!

2 个答案:

答案 0 :(得分:2)

您将在最后一个条件中设置总成本,只有在未执行所有其他if-else条件时才会执行该条件。这就是为什么这段代码不能按预期工作的原因。

即使您输入的值>> 100,您的结果也永远不会分配给totalCost。因为执行会进入代码的这一部分

         else if (markUpRate == markUpTotal)
        {
            // Calculate the total monetary amount
            markUpTotal = costPrice * markUpRate;
        }

然后直接跳转到Message.Show(..)行。

答案 1 :(得分:0)

如果有其他陈述,你会有很多交叉。如果costPrice是50,你想运行速率A,速率B或速率C(我认为你已经用标记率C将你的&gt;符号设置错误了。)

另外,为什么它在try循环中?您基本上是在说:“如果没有问题,请将costPrice分配给用户输入的内容,然后跳过其余部分。如果出现问题,请执行其余操作,但costPrice将是我在开始时分配给它的默认值(0)。“

基本上,所有剩下的东西都应该在try循环中,而不是catch循环。

哦,看了Xaero的答案,我不得不在这里说这个因为我不允许不发表评论:(。