0

私は、未払いの所得税を計算するモジュラー プログラムに取り組んでいます。私の頭ではそれは理にかなっていますが、私のプログラムは1行のコードしか実行せず、停止します...エラーメッセージも何もありません。CalculateTaxDue クラスの while ループと関係があるような気がします

プログラムは次のことを行う必要があります: a) ユーザーから有効な入力を取得する (あるクラスで) b) 支払うべき税金を計算する (別のクラスで) c) ユーザーが入力した課税所得を表示し、定率に従って支払うべき税金、可変パーセンテージに応じた税額と総税額 (さらに別のクラス)

これまでの私のプログラムは次のとおりです。ちゃんと動くはずなのに動かない。

class Program
{
    static void Main(string[] args)
    {
        // declare variables
        double taxableIncome, incomeTaxDue, flatRate, variablePercentage;

        // get user input
        taxableIncome = GetTaxableInput.GetDouble("Please enter your total income: ");

        // calculate tax due
        incomeTaxDue = CalculateTaxDue.GetTaxableIncome(taxableIncome);

        // display taxable income
        DisplayTaxRate.DisplayTaxableIncome("Your total income is: ", taxableIncome);

        // display flat rate
        flatRate = CalculateTaxDue.GetFlatRate(taxableIncome);
        DisplayTaxRate.DisplayFlatRate("Your tax rate is: ", flatRate);

        // display variable percentage
        variablePercentage = CalculateTaxDue.GetVariablePercentage(taxableIncome);
        DisplayTaxRate.DisplayVariablePercentage("Your variable percentage is: ", variablePercentage);

        // display total tax due
        DisplayTaxRate.DisplayTotalTaxDue("Your total income tax due is: ", incomeTaxDue);

        // keep console open
        Console.ReadLine();
    }
}

class GetTaxableInput
{
    public static double GetDouble(string message)
    {
        // declare variable
        double result;
        // ask for input
        Console.Write(message);
        // capture and validate the user input
        while (!double.TryParse(Console.ReadLine(), out result))
        {
            Console.WriteLine("Invalid input ");
            Console.Write(message);
        };
        return result;
    }
}

class CalculateTaxDue
{
    public static double GetTaxableIncome(double taxableIncome)
    {
        double incomeTaxDue;
        double flatRate;
        double variablePercentage;

        // calculate and return total income tax due.
        while (!double.TryParse(Console.ReadLine(), out incomeTaxDue))
        {

            if (taxableIncome < 0)
            {
                flatRate = 0;
                variablePercentage = 0;
                incomeTaxDue = taxableIncome * variablePercentage + flatRate;
            }
            else if (taxableIncome < 49999)
            {
                variablePercentage = 0.05;
                flatRate = 0;
                incomeTaxDue = taxableIncome * variablePercentage + flatRate;
            }
            else if (taxableIncome < 99999)
            {
                variablePercentage = 0.07;
                flatRate = 2500;
                incomeTaxDue = taxableIncome * variablePercentage + flatRate;
            }
            else if (taxableIncome > 100000)
            {
                variablePercentage = 0.09;
                flatRate = 6000;
                incomeTaxDue = taxableIncome * variablePercentage + flatRate;
            }
        }
        return incomeTaxDue;
    }

    // calculate and return the tax rate
    public static double GetFlatRate(double taxableIncome)
    {
        double incomeTaxDue;
        double flatRate;
        double variablePercentage;

        while (!double.TryParse(Console.ReadLine(), out flatRate))
        {

            if (taxableIncome < 0)
            {
                flatRate = 0;
                variablePercentage = 0;
                incomeTaxDue = taxableIncome * variablePercentage + flatRate;
            }
            else if (taxableIncome < 49999)
            {
                variablePercentage = 0.05;
                flatRate = 0;
                incomeTaxDue = taxableIncome * variablePercentage + flatRate;
            }
            else if (taxableIncome < 99999)
            {
                variablePercentage = 0.07;
                flatRate = 2500;
                incomeTaxDue = taxableIncome * variablePercentage + flatRate;
            }
            else if (taxableIncome > 100000)
            {
                variablePercentage = 0.09;
                flatRate = 6000;
                incomeTaxDue = taxableIncome * variablePercentage + flatRate;
            }
        }
        return flatRate;
    }

    // calculate and return the variable percentage ( tax rate )
    public static double GetVariablePercentage(double taxableIncome)
    {
        double incomeTaxDue;
        double flatRate;
        double variablePercentage;

        while (!double.TryParse(Console.ReadLine(), out variablePercentage))
        {

            if (taxableIncome < 0)
            {
                flatRate = 0;
                variablePercentage = 0;
                incomeTaxDue = taxableIncome * variablePercentage + flatRate;
            }
            else if (taxableIncome < 49999)
            {
                variablePercentage = 0.05;
                flatRate = 0;
                incomeTaxDue = taxableIncome * variablePercentage + flatRate;
            }
            else if (taxableIncome < 99999)
            {
                variablePercentage = 0.07;
                flatRate = 2500;
                incomeTaxDue = taxableIncome * variablePercentage + flatRate;
            }
            else if (taxableIncome > 100000)
            {
                variablePercentage = 0.09;
                flatRate = 6000;
                incomeTaxDue = taxableIncome * variablePercentage + flatRate;
            }
        }
        return variablePercentage;
    }
}

class DisplayTaxRate
{
    public static void DisplayTaxableIncome(string message, double numberValue)
    {
        Console.WriteLine("{0} {1:c}", message, numberValue);
    }
    public static void DisplayFlatRate(string message, double numberValue)
    {
        Console.WriteLine("{0} {1:c}", message, numberValue);
    }
    public static void DisplayVariablePercentage(string message, double numberValue)
    {
        Console.WriteLine("{0} {1:P}", message, numberValue);
    }
    public static void DisplayTotalTaxDue(string message, double numberValue)
    {
        Console.WriteLine("{0} {1:c}", message, numberValue);
    }
}

そこにそれがある。前に言ったように、エラー メッセージが表示されないので、どこから始めればよいかわかりません。ありがとう!

4

1 に答える 1

0

私はそれを考え出した。何らかの理由で、計算クラスで入力を取得するための while ループがありました:/ Chris Dunaway に感謝します! 今では魅力のように機能します。

于 2012-12-09T01:47:24.887 に答える