Java:如果只检查一次条件

时间:2013-04-09 13:03:47

标签: 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.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新手,所以我可能犯了一个非常明显的错误。

非常感谢提前。

5 个答案:

答案 0 :(得分:6)

<强>提示:

  • =是一个赋值运算符。
  • ==是一个相等运算符。
  • 在if语句中使用赋值运算符会发生什么?
  • 在if语句中使用equalityoperator会发生什么?

答案 1 :(得分:4)

if条件下,您始终必须使用==运算符进行比较,=。所以它会是:

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
 }

答案 2 :(得分:3)

如果您使用=代替==,则指定的是值而不是比较。而分配的回报就是分配的价值。所以在这种情况下它将是true所以:

if(bool = true){...}

if(true){...}

在比较中是等价的。区别在于bool将从此语句中携带新值。

答案 3 :(得分:2)

将此if (first = true)更改为{ if (first == true) {

这里=是一个赋值运算符.But ==是相等运算符。

答案 4 :(得分:1)

当检查变量是否等于其他变量时,请始终使用==

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