更改的整数值不会显示在代码的其他部分中?

时间:2014-03-31 19:17:42

标签: java if-statement int

我很抱歉这个奇怪的标题,我真的不知道如何描述它。基本上我有一个代码,一旦调用了if语句,它就改变了整数的值, taxrate 。我认为它有效,但是一旦我尝试将其调用到代码的另一部分的JTextField中,它就会显示为0. IF语句如下:

if (taxable >= 1 && taxable <= 9075){
        taxrate = (int) (taxable * .10);
    } else if (taxable >= 9076 && taxable <= 36900) {
        taxrate = (int) (taxable * .15 + 908);
    } else if (taxable >= 36901 && taxable <= 89350) {
        taxrate = (int) (taxable * .25 + 5082);
    } else if (taxable >= 89351 && taxable <= 186350){
        taxrate = (int) (taxable * .28 + 18195);
    } else if (taxable >= 186351 && taxable <= 405100){
        taxrate = (int) (taxable * .33 + 45355);
    } else if (taxable >= 405101 && taxable <= 406750) {
        taxrate = (int) (taxable * .35 + 45883);
    } else if (taxable >= 406751) {
        taxrate = (int) (taxable * .396);
    }

taxable 由用户定义,在用户输入之前没有定义的值。

2 个答案:

答案 0 :(得分:2)

0到10之间的任何应税值(不包括10)将为您提供0的税率,代码可以完美运行。 如果不是这种情况,请确保在进行此比较之前实际分配了您的应税值。程序可能永远不会到达if语句中的代码块。

答案 1 :(得分:0)

首先,您需要清理代码

if (taxable >= 1 && taxable <= 9075){
    taxrate =  (taxable * .10);
} else if (taxable >= 9076 && taxable <= 36900) {
    taxrate =  (taxable * .15 + 908);
} else if (taxable >= 36901 && taxable <= 89350) {
    taxrate =  (taxable * .25 + 5082);
} else if (taxable >= 89351 && taxable <= 186350){
    taxrate =  (taxable * .28 + 18195);
} else if (taxable >= 186351 && taxable <= 405100){
    taxrate =  (taxable * .33 + 45355);
} else if (taxable >= 405101 && taxable <= 406750) {
    taxrate =  (taxable * .35 + 45883);
} else if (taxable >= 406751) {
    taxrate =  (taxable * .396);
}

如果将它们转换为INT,有小数点是什么意思?整数不能有小数位。如果你想让Decimals使用Double - 否则就不要使用小数。

还要确保在执行if块之前初始化taxable

private double taxable = "some value";