私は、未払いの所得税を計算するモジュラー プログラムに取り組んでいます。私の頭ではそれは理にかなっていますが、私のプログラムは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);
}
}
そこにそれがある。前に言ったように、エラー メッセージが表示されないので、どこから始めればよいかわかりません。ありがとう!