我不知道我是否正确地做了这个,我制作了一个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");
}
}
});
u总是true
无论如何,txtx
文字都是2
,即使i
将var.java
中的值更改为false
} 我继续2
。
答案 0 :(得分:2)
您错误地检查了您的情况。将布尔值与==
运算符进行比较。不是使用单个=
来声明值。所以请记住:
=
是作业 ==
是比较 这是正确的代码:
if (var.u == true) {
var.u = false;
} else {
var.u = true;
}
if (var.u == false) {
txtx.setText("1");
} else {
txtx.setText("2");
}
为了缩短它,您可以使用!
作为否定运算符,意思是不。
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");
答案 1 :(得分:0)
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");
}
}
答案 2 :(得分:0)
尝试这个>>
实际上
if (var.u = true)
此行存在问题。您没有使用Relation(==)运算符。而不是你正在做的是每次执行此行时使用分配(=
),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");
答案 3 :(得分:0)
代替var类中的公共静态变量,可以使int为private和non static,并添加getter和setter,并且在var类的构造函数中,您可以将该变量初始化为true,以便在创建实例时你将把u的值变为真。
在你的情况下,问题在于比较,你不会问这个值是否为真,但是你告诉它该值是真的:
if(var.u = true){ 需要: if(var.u == true){