当我运行代码时,它不会计算,也不会显示计算结果。 想知道我的变量或其他东西是错误的还是在错误的地方。
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);
}
}
}
需要一些帮助来解决这个问题!提前谢谢!
答案 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的答案,我不得不在这里说这个因为我不允许不发表评论:(。