这个程序给我一个错误提示"索引超出了数组的边界"当我的收入是1万美元时,我试图计算税收

本文关键字:quot 我的 万美元 计算 边界 一个 程序 错误 提示 数组 索引 | 更新日期: 2023-09-27 18:12:01

namespace TaxCalcuator
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        double[] rateArray = { 0.10, 0.15, 0.25, 0.28, 0.33, 0.35 ,0.396 };
        double[] taxableIncomeArray = { 0.0, 9275.0, 37650.0, 91150.0, 190150.0, 413350.0, 415050.0 };
        double[] taxDueArray = { 0.0, 927.50, 5183.75, 18558.75, 46278.75, 119934.75, 120529.75 };
        private void compute_Click(object sender, EventArgs e)
        {
            double income;
            int dependents;
            const double STANDARD_DEDUCTION = 6300;
            const double PERSONAL_EXEMPTION = 4050;
            double AGI;
            double tax;
            double taxDue;
            double rate;
            income = Convert.ToDouble(incomeTextBox.Text);
            dependents = Convert.ToInt32(dependentTextBox.Text);
            AGI = income - (PERSONAL_EXEMPTION + PERSONAL_EXEMPTION* dependents) - STANDARD_DEDUCTION;
            label4.Text = "Adjusted Gross Income:" + AGI.ToString("C");
            int sub =  taxableIncomeArray.Length -1;
            while  (sub >= 0 && AGI < taxableIncomeArray[sub])
            {
                if (AGI < 0)
                    tax = 0;
                --sub;
            }; 
            taxDue = taxDueArray[sub];
                rate = rateArray[sub];
            tax = taxDueArray[sub] + (AGI - taxableIncomeArray[sub]) * rate;
            label5.Text= "Income Tax:" +tax.ToString("C");
          }
        }
    }

这个程序给我一个错误提示"索引超出了数组的边界"当我的收入是1万美元时,我试图计算税收

问题可能出在这里:

    while  (sub >= 0 && AGI < taxableIncomeArray[sub])
    {
        if (AGI < 0)
            tax = 0;
        --sub;
    };

最后一次循环执行时,sub将从0开始,然后递减到-1。稍后,您将尝试使用它来索引其他数组,这些数组显然在索引-1处没有项。