【发布时间】:2019-11-15 00:38:30
【问题描述】:
C# 初学者,尝试创建一个程序,让用户输入金额、年份和费率,然后计算总金额。利率除以 100 得到十进制值,年份乘以 12 得到月利率。
代码如下:
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);
}
}
}
我不断收到错误:
CS0103当前上下文中不存在名称“totalAmount”。
我不知道是否有任何信息被正确提取和存储/计算。
【问题讨论】:
-
能否访问变量取决于变量的作用域和访问级别。
-
你没有在任何地方定义一个名为
totalAmount的变量,除了作为addMethod方法的参数,它永远不会被调用。 -
所以我必须加倍总金额;以及在 addMethod 中使用它?为什么我不必为年度金额或利息率这样做? totalAmount 应该是计算的总金额。
-
在我看来,如果您想获得“总金额”,那么您应该创建一个返回该值的属性或方法。也许最简单的方法是将
addMethod重命名为GetTotalAmount,让它返回double而不是void(它似乎不需要任何输入参数),然后进行计算并返回值从那个方法。然后调用者可以执行类似var totalAmount = program.GetTotalAmount();的操作。通常还有其他问题,但由于您刚刚开始,我想现在可以忽略它们。 -
另外,一些变量名具有欺骗性。
yearlyRate不是比率,它是用于计算总数的月数。而您使用的循环只是一遍又一遍地重新分配一个变量,而不是做任何感兴趣的复合。
标签: c#