Я пытаюсь сконденсировать этот код, чтобы он стал более компактным. Я знаю, что должен быть способ использовать вычисления из выражения else else if, чтобы использовать его в следующем расчете налоговых кронштейнов. Я попытался поместить tax = ph в each else, если оператор использовать в следующем вычислении (для значения владельца места), но он просто проигнорирует его. Редактировать: переписывать это здесь, чтобы не было похоже на обратную связь. Мой код слишком длинный, как я могу сделать его короче? Также я должен использовать оператор switch в этом назначении.Как сконденсировать эту java-программу?
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print(
"(0-single filer, 1-married jointly or qualifying widow(er), "
+ "\n2-married separately, 3-head of household)\n" +
"Enter the filing status: ");
int status = input.nextInt();
System.out.print("Enter the taxable income: ");
double income = input.nextDouble();
double tax = 0;
switch (status){
case 0: { // file single
if (income <= 8350)
tax = income * 0.10;
else if (income <= 33950)
tax = 8350 * 0.10 + (income - 8350) * 0.15;
else if (income <= 82250)
tax = 8350 * 0.10 + (33950 - 8350) * 0.15 +
(income - 33950) * 0.25;
else if (income <= 171550)
tax = 8350 * 0.10 + (33950 - 8350) * 0.15 +
(82250 - 33950) * 0.25 + (income - 82250) * 0.28;
else if (income <= 372950)
tax = 8350 * 0.10 + (33950 - 8350) * 0.15 +
(82250 - 33950) * 0.25 + (171550 - 82250) * 0.28 +
(income - 171550) * 0.33;
else
tax = 8350 * 0.10 + (33950 - 8350) * 0.15 +
(82250 - 33950) * 0.25 + (171550 - 82250) * 0.28 +
(372950 - 171550) * 0.33 + (income - 372950) * 0.35;
}
break;
case 1:{ //file married or Widow
if (income <= 16700)
tax = income * 0.10;
else if(income <= 67900)
tax = 16700 * .10 + (income - 16700) * .15;
else if (income <= 137050)
tax = 16700 * .10 + (67900 - 16700) * .15 + (income - 137050) * .25;
else if (income <= 208850)
tax = 16700 * .10 + (67900 - 16700) * .15 + (137050 - 67900) * .25 +
(income - 208850) * .28;
else if (income <= 372950)
tax = 16700 * .10 + (67900 - 16700) * .15 + (137050 - 67900) * .25 +
(208850 - 137050) * .28 + (income - 372950) * .33;
else
tax = 16700 * .10 + (67900 - 16700) * .15 + (137050 - 67900) * .25 +
(208850 - 137050) * .28 + (372950 - 208850) * .33 + (income - 372950) * .35;
}
break;
}
System.out.println("Your tax will be $" + tax);
}
}
Можете ли вы не учитывать все жестко закодированные вычисления в числа. Измените это «8350 * 0.10 + (33950 - 8350) * 0,15 + (82250 - 33950) * 0,25 + (171550 - 82250) * 0,28 + (372950 - 171550) * 0,33" на любой результат. Это значительно облегчит читаемость. – tom
@tom, с другой стороны, это будет плохо для ремонтопригодности, потому что он скрывает формулу, лежащую за значениями. – Henry
то хотя бы сделать их константами! – tom