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

时间:2014-10-03 01:53:15

标签: c#

我在使用这个应用程序时遇到一些问题需要为c#类编写。我收到一个Unhandled Exception错误。我知道问题依赖于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

1 个答案:

答案 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());