无法在Java中更改Float的值

-1 java floating-point

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

static float float1ID;
public void void1() {
    if(boolean1) {
        float1ID = 56F;
    } else if(!boolean1) {
        float1ID = 0F;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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;
    }



}
Run Code Online (Sandbox Code Playgroud)

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

pax*_*blo 6

使用原始代码:

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

它保持为零,因为你正在改变float1,不是 float1ID,虽然你现在已经编辑了代码来修复它,所以我认为这是一个错字.


唯一的另一种可能性boolean1是总是错误的.否则价值改变.

此外:

if (boolean1) {
    float1ID = 56F;
} else if (!boolean1) {
    float1ID = 0F;
}
Run Code Online (Sandbox Code Playgroud)

看起来有点离奇.除非你对我有不同的"布尔/二进制"含义,否则if (!boolean1)完全没必要.你可以使用:

if (boolean1){
    float1ID = 56F;
} else {
    float1ID = 0F;
}
Run Code Online (Sandbox Code Playgroud)

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

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);
Run Code Online (Sandbox Code Playgroud)

看看会发生什么.