Java:如果条件只检查一次
我正在尝试用Java创建一个简单的Android应用程序,代码如下:Java:如果条件只检查一次,java,if-statement,conditional,Java,If Statement,Conditional,我正在尝试用Java创建一个简单的Android应用程序,代码如下: public class MainActivity extends Activity { //Declare variables boolean first = true; boolean secondorbefore = true; Button ClickMe = (Button) findViewById(R.id.clicker); ClickMe.setO
public class MainActivity extends Activity {
//Declare variables
boolean first = true;
boolean secondorbefore = true;
Button ClickMe = (Button) findViewById(R.id.clicker);
ClickMe.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Check to see if this is the first click
if (first = true) {
first = false;
// DO STUFF FOR FIRST CLICK
} else if ((secondorbefore = true) {
//so this is the second click?
secondorbefore = false;
// DO STUFF FOR SECOND CLICK
} else {
//OK it's the third click or later
// DO STUFF FOR THIRD OR LATER CLICKS
}
}
});
}
然而,它似乎只在if条件下运行一次。它在第一个实例中执行代码,包括将secondorbefore变量设置为false,但随后的单击似乎没有任何作用。OnClickListener代码将在后续单击中执行,但它只是没有通过条件语句运行
Java新手,所以我可能犯了一个非常明显的错误
非常感谢。将此if(first=true)
更改为{if(first=true){
此处=是赋值运算符。但==是相等运算符。将此if(first=true)
更改为{if(first==true){
Here=是赋值运算符。但是==是相等运算符。提示:
是赋值运算符=
是一个相等运算符=
- 在if语句中使用赋值运算符时会发生什么情况
- 在if语句中使用equalityoperator时会发生什么情况
是赋值运算符=
是一个相等运算符=
- 在if语句中使用赋值运算符时会发生什么情况
- 在if语句中使用equalityoperator时会发生什么情况
- 提示:
=
而不是=
,您是在分配一个值,而不是进行比较。分配的返回值就是被分配的值。因此,在这种情况下,它将是真的
,因此:
if(bool = true){...}
及
在比较中是等效的。区别在于
bool
将从此语句中携带新值。如果使用=
而不是=
,则是赋值而不是比较。而赋值的返回值就是被赋值的值。因此,在这种情况下,它将是true
,因此:
if(bool = true){...}
及
在比较中是等效的。区别在于
bool
将从此语句中携带新值。检查变量是否等于其他变量时,始终使用=
即
检查变量是否等于其他变量时,请始终使用
==
即
在
条件下,如果条件下,您必须始终使用=
运算符进行比较,而不是使用单个=
。因此:
if (first == true) { // this is comparison
first = false; // this is assignment
// DO STUFF FOR FIRST CLICK
} else if ((secondorbefore == true) {
//so this is the second click?
secondorbefore = false;
// DO STUFF FOR SECOND CLICK
} else {
//OK it's the third click or later
// DO STUFF FOR THIRD OR LATER CLICKS
}
在条件下,如果条件下,您必须始终使用=
运算符进行比较,而不是使用单个=
。因此:
if (first == true) { // this is comparison
first = false; // this is assignment
// DO STUFF FOR FIRST CLICK
} else if ((secondorbefore == true) {
//so this is the second click?
secondorbefore = false;
// DO STUFF FOR SECOND CLICK
} else {
//OK it's the third click or later
// DO STUFF FOR THIRD OR LATER CLICKS
}
尝试if(first==true)和if((secondorbefore==true)@ZouZou,这应该是答案:)尝试if(first==true)和if((secondorbefore==true)@ZouZou,这应该是答案:)@Alnitak不适用于布尔型:)即使如此,IMHO。编译器的常见提示是,如果((var=true))将赋值包装在另一对大括号中,告诉它您知道在其他语言中正在做什么
@Alnitak不适用于布尔型:)即使如此,IMHO。编译器的常见提示是告诉它你知道你在用其他语言做什么,将赋值包装在另一对大括号中,即if((var=true))