这个程序给我一个错误提示"索引超出了数组的边界"当我的收入是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");
}
}
}
问题可能出在这里:
while (sub >= 0 && AGI < taxableIncomeArray[sub])
{
if (AGI < 0)
tax = 0;
--sub;
};
最后一次循环执行时,sub将从0开始,然后递减到-1。稍后,您将尝试使用它来索引其他数组,这些数组显然在索引-1处没有项。