Java - 否则如果循环不适用于实例变量

时间:2015-08-27 18:15:25

标签: java

我正在尝试根据工资计算用户应支付的税额。例如,在第一个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而且每次迭代都没有正确更新。

2 个答案:

答案 0 :(得分:6)

您的问题是,您始终在0添加0或将generalTax分配给(20/100) * userGrossPay

例如,020/100,因为0int分割而0.2 * userGrossPay20.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的答案并明白了什么问题,我在这里给你一些额外的信息。