Ваш код отлично работает на моем компьютере (Java 12):
import java.util.Arrays;
class Test
{
public static double[] salaryIncrease(double[] salary) {
double tax = .05;
double[] total_tax = { (salary[0] * tax) + salary[0], (salary[1] * tax) + salary[1], (salary[2] * tax) + salary[2] };
return total_tax;
}
public static void main(String[] args)
{
double[] input = {23000.50, 25478.66, 78496.50};
System.out.println(Arrays.toString(salaryIncrease(input)));
}
}
}
Хотя ваш код работает в этом случае, его можно улучшить, если принять во внимание общий случай, когда массив имеет большеили менее трех элементов. Чтобы достичь этого, вы можете изменить свой метод следующим образом:
public static double[] salaryIncrease(double[] salary) {
double tax = .05;
double[] total_tax = new double[salary.length];
for(int i=0;i<salary.length;i++)
{
total_tax[i] = salary[i]*(1.0+tax);
}
return total_tax;
}
Используя потоки, вы даже можете закодировать эту функцию как однострочную:
public static double[] salaryIncrease(double[] salary) {
return Arrays.stream(salary).map(s->s*1.05).toArray();
}