ArrayIndexOutOfBoundsException:450-Java

ArrayIndexOutOfBoundsException:450-Java,java,Java,我只是想学习Java,代码中的“一个”错误是边界外的错误,但我不明白为什么。也许有人能给我一点提示 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:450 at Salary.main(Salary.java:17) 公共级别工资{ 私有静态类; 公共静态void main(最终字符串[]args){ //税前薪俸表 int[]salariesPreTax=新的int[]{450800123522002458312533004100427

我只是想学习Java,代码中的“一个”错误是边界外的错误,但我不明白为什么。也许有人能给我一点提示

线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:450 at Salary.main(Salary.java:17)

公共级别工资{
私有静态类;
公共静态void main(最终字符串[]args){
//税前薪俸表
int[]salariesPreTax=新的int[]{45080012352200245831253300410042785001522257836100147501887520470};
double[]salariesAfterTax=新的double[15];
适用于(int i:工薪阶层){
int值=工资支出[i];
salariesAfterTax[i]=计算工资(值,getTaxClass(值));
}
对于(int i=0;i=800&&税前工资<1200){
返回2;
}
如果(税前工资>=1200和税前工资<2100){
返回3;
}
如果(税前工资>=2100和税前工资<3000){
返回4;
}
如果(税前工资>=3000和税前工资<3800){
返回5;
}
如果(税前工资>=3800和税前工资<5000){
返回6;
}
如果(税前工资>=5000){
返回7;
}
返回类;
}
}//结束类
中的
i

for ( int i : salariesPreTax) {
    int value = salariesPreTax[i];
已经是数组元素的值,而不是数组的索引(您可以在异常中看到,它包含
450
-数组中的第一个值)

因此,要迭代数组的值,只需:

for (int value : salariesPreTax) {
    ...
但是,由于还需要修改数组,因此需要索引,因此应使用常规for循环,该循环会在索引上进行迭代:

for (int i = 0; i < salariesPreTax.length; i++) {
    int value = salariesPreTax[i];
    salariesAfterTax[i] = calculateSalary(value, getTaxClass(value));
}
for(int i=0;i
中的
i

for ( int i : salariesPreTax) {
    int value = salariesPreTax[i];
已经是数组元素的值,而不是数组的索引(您可以在异常中看到,它包含
450
-数组中的第一个值)

因此,要迭代数组的值,只需:

for (int value : salariesPreTax) {
    ...
但是,由于还需要修改数组,因此需要索引,因此应使用常规for循环,该循环会在索引上进行迭代:

for (int i = 0; i < salariesPreTax.length; i++) {
    int value = salariesPreTax[i];
    salariesAfterTax[i] = calculateSalary(value, getTaxClass(value));
}
for(int i=0;i
这已经返回了一个值,所以不要试图从中提取任何值

直接使用它:

... = CalculateSalary(i,....);
}
这已经返回了一个值,所以不要试图从中提取任何值

直接使用它:

... = CalculateSalary(i,....);
}