Java-Else If循环不能与实例变量一起工作
我试图根据工资计算用户应该缴纳多少税。例如,在第一个Java-Else If循环不能与实例变量一起工作,java,Java,我试图根据工资计算用户应该缴纳多少税。例如,在第一个if循环中计算20%,这将保存在generaltax中: int generalTax = 0; int userGrossPay = 50000; if (userGrossPay <= 10600) {generalTax += 0;} else if (((userGrossPay >= 10600) && (userGrossPay <= 31785))) { gene
if
循环中计算20%,这将保存在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);
int generalTax=0;
int userGrossPay=50000;
如果(userGrossPay=10600)和(userGrossPay=31786)和(userGrossPay 150001){generalTax=((45/100)*userGrossPay);}
else{System.out.println(“error”);};
userGrossPay-=generalTax;
System.out.println(userGrossPay);
然而,
generalTax
由于某种原因,pay总是被固定为0
,并且没有在每次迭代中正确更新。您的问题是您总是添加0
或将0
分配给generalTax
例如,
(20/100)*userGrossPay
是0
,因为20/100
是0
由于int
分割。也将其更改为0.2*userGrossPay
或20.0/100*userGrossPay
。类似地,更改除两个整数的所有其他位置。您的问题是总是将0
或0
赋值给generalTax
例如,
(20/100)*userGrossPay
是0
,因为20/100
是0
由于int
分割。也将其更改为0.2*userGrossPay
或20.0/100*userGrossPay
。类似地,更改除两个整数的所有其他位置。这是由整数除引起的
如果将浮点数据类型与整数混合使用,它将通过升级实现数据转换
例如:
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的回答,并且理解了问题所在,我在这里给你一些补充信息。这是整数除法造成的 如果将浮点数据类型与整数混合使用,它将通过升级实现数据转换 例如:
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的回答,并且理解了问题所在,我在此向您提供一些补充信息。非常感谢Eran,您解决了我的问题。只是想澄清你所说的“整数除法”是什么意思;谢谢。@ATGuy当您将两个整数(如20/100)除时,结果是一个整数。因为整数中没有分数,所以结果是0。另一方面,如果你把它改为20.0/100,你就是在用一个整数除以一个double,这将导致浮点除法并返回0.2。谢谢你,Eran,我非常感谢你帮了我这么多忙,下次我会记下你的建议。非常感谢你,Eran,你解决了我的问题。只是想澄清你所说的“整数除法”是什么意思;谢谢。@ATGuy当您将两个整数(如20/100)除时,结果是一个整数。因为整数中没有分数,所以结果是0。另一方面,如果将其更改为20.0/100,则表示将一个double除以一个整数,这将导致浮点除法并返回0.2。谢谢您,Eran,我非常感谢您的帮助,下次我会记下您的建议。
如果
通常不被称为“循环”。还要注意的是,在进行除法时,您希望使用的是float
,而不是int
。调试该语句的最快方法是在if
语句的每个子句中放入“print”语句,并确定是否达到该子句。@ATGuy我还有一些其他信息要告诉您。看看下面。如果通常不将
描述为“循环”。还要注意的是,在进行除法时,您希望使用的是float
,而不是int
。调试该语句的最快方法是在if
语句的每个子句中放入“print”语句,并确定是否达到该子句。@ATGuy我还有一些其他信息要告诉您。看看下面。谢谢用户,我被卡住了,因为当我使用计算器时,我的公式似乎很好,这就是为什么我如此困惑的原因。谢谢你的建议谢谢你的用户,我被卡住了,因为当我使用计算器时,我的公式似乎很好,这就是为什么我如此困惑的原因。谢谢你的建议