C#中的税款计算器-如何显示一段时间内的债务

时间:2018-11-01 17:14:28

标签: c# console calculator tax

所以id喜欢在c#中创建执行以下操作的税费计算器:

示例1:

Input:

1200.0 - amount loaned

10 - tax in percentage

3 - number of years in debt 

Output:

    Growth of debt throughout 3 years:

    1200.0

    1320.0

    1452.0

    1597.2

到目前为止,我有这个:

static int Mostra(int n, int p, int q)
    {
        int res = n + ((n * (p / 100)) * q);

        Console.WriteLine("Crescimento da dívida ao longo de " + q.ToString() + " anos:");

    }


    static bool Validar(string s, out int i)
    {
        bool res = int.TryParse(s, out i);
        if (!res)
            i = 0;
        return res;

    }


    static void Main(string[] args)
    {
        Console.WriteLine("Insira o valor do seu empréstimo em euros:");
        string s1 = Console.ReadLine();
        Console.WriteLine("Insira o valor correspondente à taxa de juro acordada:");
        string s2 = Console.ReadLine();
        Console.WriteLine("Insira o número de anos em que a dívida não foi paga:");
        string s3 = Console.ReadLine();

        string[] valores = new string[p];


        int n;
        int p;
        int q;


        if (Validar(s1, out n) && Validar(s2, out p) && Validar(s3, out q))
        {
            if (n >= 0 && p >= 0 && q >= 0 && p <= 100)
            {
                //Mostra(n, p, q);
            }
            else
                Console.WriteLine("O valor introduzido é inválido.");

        }

        Console.ReadKey();
    }

请记住,这是一个控制台应用程序。 我的问题是如何显示多年来的债务而不是最终结果。以及如示例所示如何以十进制显示它。如果可以帮助我,我很高兴:D

2 个答案:

答案 0 :(得分:0)

如果要将结果显示为小数,则应使用decimal数据类型而不是int数据类型。

在最初的示例中,尽管您每年也要增加利息,尽管您的计算在整个时间段内都是固定利息,但该函数看起来应该更像

static int Mostra(decimal n, decimal p, int q)
{
    Console.WriteLine("Crescimento da dívida ao longo de " + q.ToString() + " anos:");
    decimal res = n;
    for (int i = 1; i <= q; i++)
    {
        res+= res * (p / 100);
        Console.WriteLine(res);
    }

}

您还需要编辑Validar方法以使用decimal.TryParse处理小数转换,因为利率和金额应为小数以处理基于小数的计算-尽管年份仍然可以是整数< / p>

答案 1 :(得分:0)

在这里,我注意到有几件事有些古怪。您需要将Validar中的某些变量从int更改为doubles ...否则,如果您希望输入为x.0,则您的代码将无法处理.0,因为您要在int中查找int Validar方法。我已经修复了一些代码,以便您放入的所有int都能正常工作,并且您将以所需的格式获得输出。

using System;

    public class Program
    {
     static void Mostra(double n, double p, double q)
     {
    //double res = n + ((n * (p / 100)) * q);

    Console.WriteLine("Crescimento da dívida ao longo de " + q.ToString() + " anos: \n");

    //Loop that increments each year for q number of years
    for (int x = 0; x < q + 1; x++)
    {
        double res = 0;
        res = n + ((n * (p / 100)) * x);
        Console.WriteLine(res);
    }

}


static double Validar(string s)
{
    int x = int.Parse(s);
    double res = (double)(x);

    return res;

}


public static void Main(string[] args)
{
    Console.WriteLine("Insira o valor do seu empréstimo em euros:");
    string s1 = Console.ReadLine();
    Console.WriteLine("Insira o valor correspondente à taxa de juro acordada:");
    string s2 = Console.ReadLine();
    Console.WriteLine("Insira o número de anos em que a dívida não foi paga:");
    string s3 = Console.ReadLine();

    double n = Validar(s1);
    double p = Validar(s2);
    double q = Validar(s3);



    if (n >= 0 && p >= 0 && q >= 0 && p <= 100)
    {
        Mostra(n, p, q);
    }
    else
        Console.WriteLine("O valor introduzido é inválido.");

}
}