很抱歉这是一个非常简单的解决方案...
所以我试图从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");
再次感谢您抽出宝贵的时间来帮助我。
答案 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
为止。