无法将布尔值更改为true

时间:2013-12-04 15:18:13

标签: java android

当我执行代码时,它总是进入else条件。但我希望if语句在score = true时运行;我无法弄清楚如何做到这一点...请帮助我。 如果不是这样,还有其他方法可以接近吗?

public class withComp extends Activity {

 public boolean isPlayer2=false, score=false;
 @Override
     public void onCreate(Bundle savedInstanceState) {  
      super.onCreate(savedInstanceState);    
      setContentView(R.layout.withcomp);
      final Button one = (Button)findViewById(R.id.one); 
      final TextView winner = (TextView)findViewById(R.id.winner);

        one.setOnClickListener(new View.OnClickListener() 
        {
           @Override
           public void onClick(View v) 
               {
               if(isPlayer2==false)
                  {
                one.setText("X");
                score = true;
                one.setEnabled(false);
                isPlayer2 = true;
              }
               else
               {
                  one.setText("O");
                  one.setEnabled(false);
                  isPlayer2=false;
               }
          }
   });
     if(score == true)
     {
       winner.setText("won");
     }
    else {
      winner.setText("lose");
         }
  }
}

6 个答案:

答案 0 :(得分:5)

只需使用

if(score)

没有逗号

你不需要写 if (variable == true)if (variable == false)

写作会好得多 if (variable)if (!variable)

答案 1 :(得分:1)

  • 创建活动时,您只执行一次If-Else。 将if-else-code移动到OnClickListener。
  • 当然,在if。
  • 之后删除分号

例如:

public class withComp extends Activity {

  public boolean isPlayer2=false, score=false;
  @Override
     public void onCreate(Bundle savedInstanceState) {  
      super.onCreate(savedInstanceState);  
      setContentView(R.layout.withcomp);

      final Button one = (Button)findViewById(R.id.one); 
      final TextView winner = (TextView)findViewById(R.id.winner);

      one.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
             if (!isPlayer2) {
                one.setText("X");
                score = true;
                one.setEnabled(false);
                isPlayer2 = true;
              } else {
                  one.setText("O");
                  one.setEnabled(false);
                  isPlayer2=false;
              }

              // XXX Move it here
              if (score) {
                winner.setText("won");
              } else {
                winner.setText("lose");
              }
          }
       });
   }
}

答案 2 :(得分:0)

您的问题在于if(score == true);

如果条款在条件之后不需要分号,而是声明。给它一个分号会传递null语句,这意味着什么也不会发生。

之后它将执行以下两个块,如果得分为true,则覆盖要执行的块中发生的事件。

您只需删除分号即可解决此问题,让它正确执行阻止。

答案 3 :(得分:0)

分号表示结束语。删除;

来自if(score == true);

答案 4 :(得分:0)

以这种方式使用它“

if(score){
 winner.setText("won");
}
else {
 winner.setText("lose");
}

答案 5 :(得分:0)

一些事情,

  • 正如已经指出的那样,你在if语句之后使用分号;,并且我觉得你能够编译并执行这段代码
  • 两个,您的if-else块在方法create中执行,并且您在侦听器中设置了值score,这意味着,块if-else将在您创建后执行活动,而按下按钮
  • 后,值score将设置为true