税务计算控制台应用程序问题

本文关键字:问题 应用程序 控制台 计算 税务 | 更新日期: 2023-09-27 18:25:34

我对这个应用程序有一些问题,需要为c#类编写。我收到一个未处理的异常错误。我知道这个问题依赖于program.cs和TaxMath.cs,但我不确定从哪里开始,任何指导都将不胜感激。

错误:

Unhandled Exception: System.FormatException: Index (zero based) must be greater
than or equal to zero and less than the size of the argument list.
   at System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String fo
rmat, Object[] args)
   at System.String.Format(IFormatProvider provider, String format, Object[] arg
s)
   at System.IO.TextWriter.WriteLine(String format, Object arg0)
   at System.IO.TextWriter.SyncTextWriter.WriteLine(String format, Object arg0)
   at System.Console.WriteLine(String format, Object arg0)
   at TaxProgram.Program.Main(String[] args) in c:'Users'xxxx'Desktop'ConsoleApp
lication2'Program.cs:line 26

class Program
            {
                static void Main(string[] args)
                {
                    TaxValues tv = new TaxValues();
                    Console.WriteLine("Enter in your income: 'r'n");
                    double income = Convert.ToDouble(Console.ReadLine());
                    Console.WriteLine("Enter in single, marryjointly, marryseperate, or      headohouse to enter in your filing status: 'r'n");
                    FilingStatus fs = (FilingStatus)Enum.Parse(typeof(FilingStatus), Console.ReadLine());
    (line 24)       Tax TaxOwed = new Tax(tv, fs, income);
   (line 26)        Console.WriteLine("Your tax is: {1} 'r'n ", TaxOwed.calculate());

class Tax
            {
                private TaxValues _taxvalues;
                private FilingStatus _filingstatus;
                double _income;
                public Tax (TaxValues tv, FilingStatus fs, double income)
                {
    (line 18)       Income = income;
                    _taxvalues = tv;
                    _filingstatus = fs;
                 }
                    public double Income
                    {
                        get { return _income; }
                        set { 
                            if (value <= 0)
                            {
                                throw new ArgumentException(String.Format("{0} must be > 0", value));
                            }       
                            _income = value;
    (line 32)               calculate();
                        }
                    }
                   private void calculate () 
                   {
                       double TaxOwed = 0.0;
                       if (_filingstatus == FilingStatus.single)
                       {
    (line 42)              if (Income <= _taxvalues.Single10)
                               TaxOwed = Income * .1;
                           else if (Income <= _taxvalues.Single15)
                               TaxOwed = Income * .15;
                           else if (Income <= _taxvalues.Single25)
                               TaxOwed = Income * .25;
                           else if (Income <= _taxvalues.Single28)
                               TaxOwed = Income * .28;
                           else if (Income <= _taxvalues.Single33)
                               TaxOwed = Income * .33;
                           else if (Income > _taxvalues.Single33)
                               TaxOwed = Income * .35;
                           else Console.WriteLine("You dun goofed");
                          .. 
                          return TaxOwed 0.0

税务计算控制台应用程序问题

您在属性中执行计算:

    public double Income
    {
        get { return _income; }
        set
        {
            if (value <= 0)
            {
                throw new ArgumentException(String.Format("{0} must be > 0", value));
            }
            _income = value;
            //calculate(); <<ISSUE IS HERE
        }
    }

更改方法的签名以返回双重:

public double calculate()
{
  double TaxOwed = 0.0;
   ...
  return TaxOwed;
}

最后登录控制台:

Console.WriteLine("Your tax is: {0} 'r'n ", TaxOwed.calculate());