是否可以通过变量将用户输入添加到方程式中? (C#)

时间:2018-10-12 18:27:13

标签: c# variables

很抱歉这是一个非常简单的解决方案...

所以我试图从4个输入中获得期末余额,

  • 期初余额
  • 已过去的月数
  • 用户指定的年利率
  • 以及用户可以输入的可选每月供款。这就是我想象的方程式

balance = contribution + balance + (INTEREST_RATE * balance) + (yearly * balance);

一切都很好,直到编译器声明未分配的局部变量'contribution'的使用为止,这确实使我感到困惑,因为在代码顶部的注释中,我已经声明了int。

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

    private void calculateButton_Click(object sender, EventArgs e)
    {
        // Constant for the monthly interest rate.
        const decimal INTEREST_RATE = 0.005m;

        // Local variables
        decimal balance; // The account balance
        int months; // The number of months
        int contribution;
        int count = 1; // Loop counter, initialized with 1
        decimal yearly;

        // Get the starting balance.
        if (decimal.TryParse(txtStartBalance.Text, out balance))
        {
            // Get the number of months.
            if (int.TryParse(txtMonths.Text, out months))
            {
                // Get the yearly interest rate
                if (decimal.TryParse(txtYearly.Text, out yearly))
                {
                    //Get monthly contribution
                    if (int.TryParse (txtMonthly.Text, out contribution));
                }
                // The following loop calculates the ending balance.
                while (count <= months)
                {
                    // Add this month's interest to the balance.
                    balance = contribution + balance + (INTEREST_RATE * balance) + (yearly * balance);

                    // Display this month's ending balance.
                    if (rdoEnglish.Checked == false)
                        lstDetails.Items.Add("ʻO ka pale hope " + "no ka mahina " + count + " ʻO " + balance.ToString("c"));
                    else
                        lstDetails.Items.Add("The ending balance for " + "month " + count + " is " + balance.ToString("c"));

                    // Add one to the loop counter.
                    count = count + 1;
                }

                // Display the ending balance.
                txtEnding.Text = balance.ToString("c");

再次感谢您抽出宝贵的时间来帮助我。

2 个答案:

答案 0 :(得分:2)

  

这真的让我感到困惑,因为在代码顶部的注释中,我声明贡献将是一个整数。

是的,但是您没有在代码可以采用的至少一条路径中为变量分配 value 。 (特别是如果int.TryParse (txtMonthly.Text, out contribution));失败),然后您尝试在行中使用contribution

balance = contribution + balance + (INTEREST_RATE * balance) + (yearly * balance);

使用前,您需要为contribution分配一个值。考虑一下contribution应该代表什么,并将其相应地分配给一个值

答案 1 :(得分:0)

尝试声明变量,如下所示:

decimal.TryParse(txtStartBalance.Text, out decimal balance);  

最好为贡献字段(txtMonthly)选中一个复选框,并将其可见性设置为Checkbox.checked属性,因此,如果用户要设置可选的贡献值,则必须选中该复选框以写下来。
同样,在您的代码中使用if也是没有用的,直到当这些Exceptions方法重新运行为false并警告用户使用正确的输入再次尝试时抛出TryParse为止。