我正在尝试写这个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?
答案 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)
如果您正在处理布尔值,则只能使用两个值 - true
和false
。 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是一种类型安全的语言。因此,您无法使用==
运算符来比较两种不兼容的类型,在本例中为boolean
和int
字面值0
。所以你可以做以下两件事之一:
传递int
参数
public void currentState(int x){
if (x == 0) {
//code
} else {
//code
}
}
在您的原始案例中传递boolean
public void currentState(boolean x){
if (x) {
//code
} else {
//code
}
}