我正在尝试根据工资计算用户应支付的税额。例如,在第一个schema
循环中计算20%,这将保存在if
中:
generaltax
但 int generalTax = 0;
int userGrossPay = 50000;
if (userGrossPay <= 10600) {generalTax += 0;}
else if (((userGrossPay >= 10600) && (userGrossPay <= 31785))) { generalTax = ((20/100) * userGrossPay); }
else if (((userGrossPay >= 31786) && (userGrossPay <= 150000))) { generalTax = ((40/100) * userGrossPay); System.out.println(generalTax);}
else if (userGrossPay > 150001) {generalTax = ((45/100) * userGrossPay); }
else{System.out.println("error");};
userGrossPay -= generalTax;
System.out.println(userGrossPay);
付费因某种原因总是卡在generalTax
而且每次迭代都没有正确更新。
答案 0 :(得分:6)
您的问题是,您始终在0
添加0
或将generalTax
分配给(20/100) * userGrossPay
。
例如,0
为20/100
,因为0
因int
分割而0.2 * userGrossPay
为20.0/100 * userGrossPay
。也可以更改<p>
或<select>
。同样地改变你划分两个整数的所有其他地方。
答案 1 :(得分:0)
这是由整数除法引起的。
如果将浮动数据类型与整数混合,它将通过促销为您提供数据转换。
例如:
int num = 5;
System.out.println(num / 2); //Gives you 2
System.out.println(num / 2.0); //Gives you 2.5
System.out.println(num * 2); //Gives you 10
System.out.println(num * 2.0); //Gives you 10.0
System.out.println(num + 2.5); //Gives you 7.5
如果操作中的所有操作数都是整数,那么输出也将是整数。这就是你偶然进入整数除法的方法。
((20/100) * userGrossPay);
我知道你已经接受了Eran的答案并明白了什么问题,我在这里给你一些额外的信息。