C#复利计算器(初学者)
C#初学者,尝试创建一个程序,用户输入金额、年数和费率,然后计算总金额。费率除以100得到小数点,年份乘以12得到月费率 代码如下:C#复利计算器(初学者),c#,C#,C#初学者,尝试创建一个程序,用户输入金额、年数和费率,然后计算总金额。费率除以100得到小数点,年份乘以12得到月费率 代码如下: class Program { static void Main(string[] args) { CompoundClass program = new CompoundClass(); Console.Write("Please enter the initial balance for your acco
class Program
{
static void Main(string[] args)
{
CompoundClass program = new CompoundClass();
Console.Write("Please enter the initial balance for your account: ");
double balance = Convert.ToDouble(Console.ReadLine());
Console.Write("Please enter the annual interest rate: ");
double interestRate = Convert.ToDouble(Console.ReadLine());
program.Rate(interestRate);
Console.Write("How many years will you acrue interest? ");
double anualAmount = Convert.ToDouble(Console.ReadLine());
program.Years(anualAmount);
Console.WriteLine($"Your balance after {anualAmount} years is {totalAmount:C}\n");
Console.ReadLine();
}
}
class CompoundClass
{
public double rate;
public double yearlyRate;
public double balance;
public void Rate(double interestRate)
{
if (interestRate > 0)
{
rate = interestRate / 100;
}
}
public void Years(double anualAmount)
{
if (anualAmount > 0)
{
yearlyRate = anualAmount * 12;
}
}
public void addMethod(double totalAmount)
{
for (int i = 1; i < yearlyRate + 1; i++)
{
totalAmount = balance * Math.Pow(1 + rate / yearlyRate, yearlyRate * i);
}
}
}
类程序
{
静态void Main(字符串[]参数)
{
CompoundClass程序=新的CompoundClass();
控制台。写下(“请输入您帐户的初始余额:”);
double balance=Convert.ToDouble(Console.ReadLine());
控制台。写入(“请输入年利率:”);
double interestRate=Convert.ToDouble(Console.ReadLine());
项目利率(利率);
控制台。写下(“你会感兴趣多少年?”);
double-anualAmount=Convert.ToDouble(Console.ReadLine());
项目年数(阿努阿拉蒙特);
WriteLine($“您在{anualAmount}年后的余额为{totalAmount:C}\n”);
Console.ReadLine();
}
}
类复合类
{
公共双费率;
公共双年报;
公共双平衡;
公共空置率(双倍利率)
{
如果(利率>0)
{
利率=利率/100;
}
}
公共无效年数(双倍阿努拉蒙特)
{
如果(anualAmount>0)
{
yearlyRate=anualAmount*12;
}
}
公共无效添加方法(双倍总金额)
{
对于(int i=1;i
我不断得到错误:
CS0103当前上下文中不存在名称“totalAmount”
我不知道是否正确提取和存储/计算了任何信息。您正在尝试打印(从
程序
)未声明的变量值(程序
中的totalAmount)
由于看起来您想要计算totalAmount
您想要更改addMethod
以返回计算出的金额,而不是接受totalAmount
作为参数
例如在程序中
do
double totalAmount = addMethod();
Console.WriteLine($"Your balance after {anualAmount} years is {totalAmount:C}\n");
并执行addMethod
返回值:
public void addMethod()
{
double calculatedTotalAmount = 0;
for (int i = 1; i < yearlyRate + 1; i++)
{
calculatedTotalAmount = balance * Math.Pow(1 + rate / yearlyRate, yearlyRate * i);
}
return calculatedTotalAmount;
}
public void addMethod()
{
双重计算的总和=0;
对于(int i=1;i
实际上,您正在将在方法范围内计算的值分配给
totalAmount
,该值在外部范围内被删除。您出现了该错误,因为“totalAmount”变量只能在CompoundClass内访问。这是因为它是使用默认的访问修饰符private创建的。
您为CompoundClass创建了一个对象
CompoundClass program = new CompoundClass();
您已经使用对象访问了这些方法。关于annualAmount或interestRate的问题,您没有从CompoundClass访问变量,您只是从Program类传递了它们。但是,您仍然可以通过program.rate等对象访问rate、yearlyRate和balance。这是因为您已将它们声明为公共的
public double rate;
public double yearlyRate;
public double balance;
program.addMethod(balance);
Console.WriteLine($"Your balance after {anualAmount} years is {program.totalAmount:C}\n");
如果您也想访问totalAmount,请将其声明为公共
public double rate;
public double yearlyRate;
public double balance;
program.addMethod(balance);
Console.WriteLine($"Your balance after {anualAmount} years is {program.totalAmount:C}\n");
您是否可以访问变量取决于变量的范围和访问级别。您没有在任何地方定义名为
totalAmount
的变量,除了作为addMethod
方法的参数,该方法从未调用。因此,我必须添加两倍的totalAmount;以及在addMethod中使用它?为什么我不为年薪或利息而这样做?totalAmount应该是计算的总数。在我看来,如果您试图获取“总数”,那么您应该创建一个返回该值的属性或方法。也许最简单的方法是将addMethod
重命名为GetTotalAmount
,让它返回一个double
,而不是void
(它似乎不需要任何输入参数),然后进行计算并从该方法返回值。然后调用方可以执行类似于var totalAmount=program.GetTotalAmount()的操作代码>。一般来说还有其他问题,但由于您才刚刚开始,我想现在可以忽略它们。此外,一些变量名是欺骗性的yearlyRate
不是一个比率,它是用于计算总数的月数。您使用的循环只是一次又一次地重新分配一个变量,而不是进行任何利息复利。谢谢!当我调试它时,总数返回为0。这是计算错误吗?看起来像是逻辑错误。我复制了您的代码,主要是为了强调变量作用域的差异以及如何返回值,因此可能复制了您的逻辑错误。也许用调试器一步一步地完成…哦,好的!我实现了更改,但出现以下错误:CS1061 C#不包含的定义,并且找不到接受第一个类型参数的可访问扩展方法(是否缺少using指令或程序集引用?),您需要添加一个公共变量:(public double TotalAmount{get;set;}
public void AddMethod(双重平衡)//首选套管{for(int i=1;i
在program类中,您需要program.AddMethod(balance);Console.WriteLine($“您在{anualAmount}年后的余额为{program.TotalAmount:C}\n”);