Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-Else If循环不能与实例变量一起工作_Java - Fatal编程技术网

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我还有一些其他信息要告诉您。看看下面。谢谢用户,我被卡住了,因为当我使用计算器时,我的公式似乎很好,这就是为什么我如此困惑的原因。谢谢你的建议谢谢你的用户,我被卡住了,因为当我使用计算器时,我的公式似乎很好,这就是为什么我如此困惑的原因。谢谢你的建议