无法在Java中更改Float的值

无法在Java中更改Float的值,java,floating-point,Java,Floating Point,好吧,我有个奇怪的问题。当我尝试更改浮点值时,它不会更改该值。这就是我试图改变它的方式: static float float1ID; public void void1() { if(boolean1) { float1ID = 56F; } else if(!boolean1) { float1ID = 0F; } } 完整的代码更改变量,以保持简单: static boolean diamond = false; static bo

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

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。你能帮我吗?
谢谢。

使用您的原始代码:

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!布尔1完全没有必要。您只需使用:

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

看看结果如何。

布尔1的值是多少?你怎么称呼void1?我们需要更多。而且,如果需要的话,没有必要做其他事情!boolean1,只要一个else就可以了。你对完整代码的定义似乎与我们其他人不同:-1什么是Var?钻石在哪里换?3您用于确认diamonID未更改的代码在哪里。。。等等我们的想法是提供一个完整的最小样本来展示问题,但我对您的代码的这种态度妨碍了我们提供帮助的能力。不是抱怨,只是指出如果你给我们看真正的代码会更快。不,我在改变布尔值。我已经验证过了。如果您已经验证了变量命名不是问题,并且您知道您正在更改boolean1的值,那么您可能会发布更多的代码。例如,你能告诉我们你是如何和在哪里声明boolean1的吗?当然,这是完整的代码,我只是重命名了变量,以保持简单。静态布尔菱形=假;静态布尔铁=假;静态布尔燃料=假;静态布尔值gold=false;静态布尔redstone=false;静态布尔电路=假;静态布尔危险=假;静态布尔值=false;静态布尔虚空=假;静态布尔场=false;静态布尔主值=false;静态布尔副本=false;静浮菱形;public void块列表{ifVar.diamondID{Var.diamondID=56F;}否则{Var.diamondID=0F;}}}@user1172622,请参阅带有调试语句的更新。如果您不发布原始代码,调试建议可能是我们能做的最好的了。可能出现的情况包括:JVM出现错误、实际代码未被调用、重命名导致的更改比您想象的要多。在所有这些情况下,调试输出都会有所帮助。经过进一步的调查,结果证明它是无效的…我交换了其他函数,它具有相同的效果,不会更改布尔状态、整数值等。