无法在Java中更改Float的值

时间:2012-01-27 02:05:41

标签: java floating-point

好的,我有这个奇怪的问题。当我尝试更改浮点值时,它不会更改该值。这就是我试图改变它的方式:

static float float1ID;
public void void1() {
    if(boolean1) {
        float1ID = 56F;
    } else if(!boolean1) {
        float1ID = 0F;
    }
}

完整代码(更改变量,以保持简单。):

static boolean diamond = false;
static boolean iron = false;
static boolean fuel = false;
static boolean gold = false;
static boolean redstone = false;
static boolean circuit = false;
static boolean danger = false;
static boolean valuable = false;
static boolean nether = false;
static boolean farm = false;
static boolean home = false;
static boolean dungeon = false;

static float diamondID;



public void BlockList(){
    if(diamond){
        diamondID = 56F;
    }else{
        diamondID = 0F;
    }



}

它只停留在0.你能帮助我吗? 感谢。

1 个答案:

答案 0 :(得分:6)

使用原始代码:

static float float1ID;
public void void1(){
    if(boolean1){
        float1 = 56F;
    }else if(!boolean1){
        float1 = 0F;
    }
}

它保持为零,因为您正在更改float1而不是 float1ID,尽管您现在已经编辑了代码来修复它,所以我会假设它是一个错字。


唯一的另一种可能性是boolean1始终为假。否则值更改。

另外:

if (boolean1) {
    float1ID = 56F;
} else if (!boolean1) {
    float1ID = 0F;
}

似乎有点奇怪。除非你对我有不同的“布尔/二进制”含义,否则if (!boolean1)完全没必要。你可以使用:

if (boolean1){
    float1ID = 56F;
} else {
    float1ID = 0F;
}

而且,由于您在评论中声明您确定要更改布尔值,因此需要调试代码。暂时更改为:

System.out.println ("DEBUG A, boolean is " + boolean1 +
    ", float is " + float1ID);
if (boolean1){
    System.out.println ("DEBUG B1");
    float1ID = 56F;
} else {
    System.out.println ("DEBUG B2");
    float1ID = 0F;
}
System.out.println ("DEBUG C, boolean is " + boolean1 +
    ", float is " + float1ID);

看看会发生什么。