【问题标题】:java global varibales can not be changed android studio [closed]java全局变量无法更改android studio [关闭]
【发布时间】:2016-03-13 15:58:33
【问题描述】:

我不知道我这样做是否正确,我做了一个java文件var.java

public class var {
   public  static  boolean u = true ;
}

在我的主要活动中

buUn.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        //var.u = !var.u ;
        if (var.u = true) {
            var.u = false;
        } else {
            var.u = true  ;
        }

        if (var.u = false){
            txtx.setText("1");
        } else {
            txtx.setText("2");
        }
    }
});

无论如何,你总是truetxtx 文本是2,即使ivar.java 中的值更改为false i 继续获取@ 987654329@.

【问题讨论】:

  • 您错误地使用 = 而不是 == 进行比较。修正你的拼写错误。

标签: java android boolean


【解决方案1】:

您错误地检查了您的条件。布尔值与== 运算符进行比较。不是用于声明值的单个=。所以请记住:

  • = 是一个任务
  • == 是一个比较

这是正确的代码:

if (var.u == true) {
   var.u = false;
} else {
   var.u = true;
}

if (var.u == false) {
   txtx.setText("1");
} else {
   txtx.setText("2");
}

为了让它更短,你可以使用!作为否定运算符,意思是not

if (var.u) {
   var.u = false;
} else {
   var.u = true;
}

if (!var.u) {
   txtx.setText("1");
} else {
   txtx.setText("2");
}

最后让它尽可能短,试试这个:

var.u = !var.u;
var.u ? txtx.setText("2") : txtx.setText("1");

【讨论】:

    【解决方案2】:

    Java 中的比较器使用==

    这样:

         //  var.u = !var.u ;
            if (var.u == true){
                var.u = false ;
            }else {
                var.u = true  ;
            }
    
    
            if (var.u == false){
                txtx.setText("1");
    
            } else {
                txtx.setText("2");
                }
        }
    

    【讨论】:

      【解决方案3】:

      您可以将 int 设为私有和非静态并添加 getter 和 setter,而不是 var 类中的公共静态变量,并且可以在 var 类的构造函数中将该变量初始化为 true,以便在创建实例时的 var 你将拥有 u 的值为 true。

      在您的情况下,问题出在比较中,您不会询问该值是否为真,但您告诉该值是否为真:

      如果 (var.u = true){ 需要: if (var.u == true){

      【讨论】:

        【解决方案4】:

        试试这个>>

        if (var.u = true) 这一行实际上存在问题。您没有使用关系 (==) 运算符。取而代之的是,您正在做的是在每次执行此行时使用 Assignment (=) 将 true 分配给变量 var.u

        解决方案:>

                     if (var.u) //its a boolean so no need to use Relational Operatior
                        var.u = false ;
                     else
                        var.u = true  ;
                     if (!var.u)   // !(not) Operator will check if it is false.
                        txtx.setText("1");
                     else 
                        txtx.setText("2");
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多