我的程序应该显示需要多少个月才能偿还债务。我的问题是,当我把代码解决了需要多长时间来偿还债务的方法,我的价值回到了负面。我的公式代码是正确的,其他所有功能都正常运行,只是当我声明CreditCardMonths() 来解决问题时,无论我的输入是什么,我总是得到-2763737号码。C#方法返回值错误负数
这里是我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DebtCalculator
{
class Program
{
static void Main(string[] args)
{
char menuItem;
Console.WriteLine("Welcome to the credit card balance payoff calculator");
Console.WriteLine();
intro();
CreditCardMonths();
displaymenu();
menuItem = GetUpperCaseYN();
while (menuItem != 'N')
{
ProcessMenuItem(menuItem);
menuItem = GetUpperCaseYN();
}
Console.WriteLine("Thank you, goodbye.");
Console.ReadKey();
}
static void intro()
{
double creditcardbalance;
creditcardbalance = GetPositiveDouble("Enter In Credit Card Balance");
double monthlypayementamount;
monthlypayementamount = GetPositiveDouble("Enter In Monthly Payement Amount");
decimal percentagerate;
percentagerate = GetPositiveDecimal("Enter In Percentage Rate");
}
static void CreditCardMonths()
{
double dailyinterestrate;
double payoff;
double creditcardbalance = 0;
double monthlypayementamount = 0;
decimal percentagerate = 0;
dailyinterestrate = (double)percentagerate/365;
payoff = (int)(-(1d/30) * Math.Log(1 + creditcardbalance/monthlypayementamount * (1 - Math.Pow(1 + dailyinterestrate, 30)))/Math.Log(1 + dailyinterestrate)) + 1;
Console.WriteLine("It will take {0} months to pay off debt",payoff);
}
//}
static decimal GetPositiveDecimal(string message)
{
decimal value;
Console.WriteLine(message);
value = decimal.Parse(Console.ReadLine());
while (value <= 0)
{
Console.WriteLine("invalid input. Please enter a non negative Decimal");
Console.WriteLine(message);
value = decimal.Parse(Console.ReadLine());
}
return value;
}
static double GetPositiveDouble(string message)
{
double value;
Console.WriteLine(message);
value = double.Parse(Console.ReadLine());
while (value <= 0)
{
Console.WriteLine("Invalid Input . Enter In A Non Negative Number");
Console.WriteLine(message);
value = double.Parse(Console.ReadLine());
}
return value;
}
static char GetUpperCaseYN()
{
char menuItem;
menuItem = char.Parse(Console.ReadLine());
menuItem = char.ToUpper(menuItem);
while (menuItem != 'Y' && menuItem != 'N')
{
Console.WriteLine("Invalid Menu Item");
menuItem = char.Parse(Console.ReadLine());
menuItem = char.ToUpper(menuItem);
}
return menuItem;
}
static void displaymenu()
{
Console.WriteLine("Calculate Another? (Y/N)");
}
static void ProcessMenuItem(char menuItem)
{
switch (menuItem)
{
case 'Y':
intro();
displaymenu();
break;
}
}
}
}
请提供一个简洁的程序来重现您的问题。 [如何提出一个好问题](http://stackoverflow.com/help/how-to-ask) –