不兼容的类型:int和boolean。如何重写if语句?

时间:2016-11-29 08:24:05

标签: java

我正在尝试写这个if语句:

public void currentState(boolean x)
    {
        boolean timeOn = true;
        boolean timeOff = false;
        if (x ==(0)) {
            x = timeOff;
        } else {
            x = timeOn;
        }
    }

if (x ==(0)不起作用,我完全理解,但你怎么重写这个,以便x可以比较为0?

5 个答案:

答案 0 :(得分:1)

ListView

if (x) { // This will do. x = timeOff; } else { x = timeOn; } 只能有一个布尔结果参数。所以if statements已经是一个布尔值,其值为x。你无法将布尔值与true/false进行比较。

0是一个关系运算符,如果它们是==则比较2个值,这会导致布尔输出。有许多equal根据该运算符比较2个值。你可以在这里阅读它,以完全理解它是如何工作的。 Summary of Operators

答案 1 :(得分:1)

如果您正在处理布尔值,则只能使用两个值 - truefalse。 0不是其中之一。

你可以写下这样的陈述:

if (x == false) {
    x = timeOff;
} else {
    x = timeOn;
}

然而,这个if语句毫无意义。它相当于:

if (x == false) {
    x = false;
} else {
    x = true;
}

它基本上说“如果x是假的,就把它弄错”。您可能想重新考虑您的方法的作用。

编辑:

您也可以这样重写:

if (x == true) {
    x = timeOff;
} else {
    x = timeOn;
}

相当于:

if (x) {
    x = timeOff;
} else {
    x = timeOn;
}

相当于:

x = !x;

答案 2 :(得分:0)

在Java中,布尔数据类型只能有两个可能的值true和false.So,它不能与0比较。因此,您需要将x作为int或者您应该使用有效的布尔值检查x喜欢if(x == true)/ if(x == false)

答案 3 :(得分:0)

尝试使用!x替换代码中的x ==(0),如下所示,x是布尔值。如果x是(false或0或null),!x将为true,而任何其他情况!x将根据您的需要返回false ..

public void currentState(boolean x)
    {
        boolean timeOn = true;
        boolean timeOff = false;
        if (!x) {
            x = timeOff;
        } else {
            x = timeOn;
        }
    }

答案 4 :(得分:0)

Java是一种类型安全的语言。因此,您无法使用==运算符来比较两种不兼容的类型,在本例中为booleanint字面值0。所以你可以做以下两件事之一:

  1. 传递int参数

    public void currentState(int x){ if (x == 0) { //code } else { //code } }

  2. 在您的原始案例中传递boolean

    public void currentState(boolean x){ if (x) { //code } else { //code } }