Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#复利计算器(初学者)_C# - Fatal编程技术网

C#复利计算器(初学者)

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

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);
        }
    }
}
类程序
{  
静态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”);