Sadece Java öğrenmeye çalışıyorum ve koddaki "bir" hatamın bir OutOfBounds-Error olduğunu ama nedenini göremiyorum. Belki birisi bana bir litte ipucu verebilir. iplik "ana" java.lang.ArrayIndexOutOfBoundsException içindeArrayIndexOutOfBoundsException: 450 - Java
İstisna: Salary.main 450 (Salary.java:17)
public class Salary {
private static int taxClass;
public static void main(final String[] args) {
// list of salaries pre tax
int[] salariesPreTax = new int[] { 450, 800, 1235, 2200, 2458, 3125, 3300, 4100, 4278, 5001, 5222, 5783, 6100, 14750, 18875, 20470 };
double[] salariesAfterTax = new double [15];
for (int i : salariesPreTax) {
int value = salariesPreTax[i];
salariesAfterTax[i] = calculateSalary(value, getTaxClass(value));
}
for (int i=0; i<salariesAfterTax.length; i++) {
System.out.println(" Salary after tax: " +salariesAfterTax[i]);
}
}
private static double calculateSalary(final int value, final int taxClass) {
double valueAfterTax = -1.0d;
switch (taxClass) {
case 1:
valueAfterTax = (value * 1);
break;
case 2:
valueAfterTax = (value * 0.945);
break;
case 3:
valueAfterTax = (value * 0.88);
break;
case 4:
valueAfterTax = (value * 0.82);
break;
case 5:
valueAfterTax = (value * 0.7975);
break;
case 6:
valueAfterTax = (value * 0.7425);
break;
case 7:
valueAfterTax = (value * 0.645);
break;
default:
valueAfterTax = (value * 0.985);
break;
}
return valueAfterTax;
}
private static int getTaxClass(final int salaryPreTax) {
if (salaryPreTax < 800) {
return 1;
}
if (salaryPreTax >= 800 && salaryPreTax < 1200) {
return 2;
}
if (salaryPreTax >= 1200 && salaryPreTax < 2100) {
return 3;
}
if (salaryPreTax >= 2100 && salaryPreTax < 3000) {
return 4;
}
if (salaryPreTax >= 3000 && salaryPreTax < 3800) {
return 5;
}
if (salaryPreTax >= 3800 && salaryPreTax < 5000) {
return 6;
}
if (salaryPreTax >= 5000) {
return 7;
}
return taxClass;
}
} // end class