我正在尝试在ASP.NET中进行一个简单的时间计算程序,人们每月输入金额和年利息和付款,需要在债务与利息一起支付的几个月内获得时间,我想测试每月支付金额是否小于每月利息金额使用if else条件,但似乎没有工作,如果我将每月付款小于每月利息金额,则程序挂起。
我的代码:
protected void btnCalculate_Click(object sender, EventArgs e)
{
if (IsValid)
{
int BorrowAmount = Convert.ToInt32(txtBorrow.Text);
double InterestRate = Convert.ToDouble(txtRate.Text);
int MonthlyPay = Convert.ToInt32(txtMAmount.Text);
double Rammount = BorrowAmount;
double monthlyIntRate = InterestRate / 12;
//LblNoMonths.Text = Convert.ToString(monthlyIntRate);
//LblNoMonths.Text = Convert.ToString(monthlyIntRate);
double firstmonthlyIntRateAmt = ((monthlyIntRate / 100) * Rammount);
if (MonthlyPay >= firstmonthlyIntRateAmt)
{
int month = 0;
while (Rammount >= MonthlyPay)
{
month++;
double monthlyIntRateAmt = ((monthlyIntRate / 100) * Rammount);
Rammount = Rammount - (MonthlyPay - monthlyIntRateAmt);
}
LblNoMonths.Text = Convert.ToString(month);
}
else
{
LblNoMonths.Text ="Monthly payment is less than the monthly interest rate!!";
}
}
}
其他条件中的代码似乎没有效果
LblNoMonths.Text = @“每月付款低于每月利率!!”;
我做错了什么,请非常感谢任何帮助,并提前感谢你们
答案 0 :(得分:1)
对于你告诉我们的内容,看起来你的程序挂起了。我不能直接用你的逻辑帮助你(因为这取决于你想要执行什么计算),但至少我可以指出一些有助于解决问题的方法
while条件可能是程序挂起的地方。根据为变量设置的值,您可能永远不会退出此循环。如果值没有意义,您必须小心并以退出条件的方式重新设计它。如果您真的因为某些特定值而陷入困境,那么检查它的方法是以调试模式运行程序(并手动测试无限循环),或者您可以轻松地在其中执行一些Console.WriteLine语句。 while循环使用计数器,并检查控制台窗口的输出,如果循环永不退出,应该给出提示。 对于else子句也是如此,写入控制台调试输出并查看代码是否进入,这应该指向正确的方向。无论如何,这是识别问题,修复它可能会改变你的代码逻辑(正如我告诉你的那样,当某些东西没有意义时,在while循环中指定一个退出条件从商业角度来看)
答案 1 :(得分:1)
按下If语句(断点)上的F9并开始调试。前进只需使用F10来执行代码执行流程! ;)您还可以使用VS观察窗口查看每个值内的确切数量......没有其他任何东西可以帮助您!