Android Studio-条件始终为真?
这将是我第一次发布问题,因为我找不到答案。我的if/else语句发生了一些非常奇怪的事情。在过去的一周里,我的代码工作得很好,但最近它不断告诉我,一个语句总是正确的 我的代码如下:Android Studio-条件始终为真?,android,if-statement,Android,If Statement,这将是我第一次发布问题,因为我找不到答案。我的if/else语句发生了一些非常奇怪的事情。在过去的一周里,我的代码工作得很好,但最近它不断告诉我,一个语句总是正确的 我的代码如下: int checking = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activi
int checking = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (checking != 1) {
speaker.setChecked(true);
} else if (checking == 1) {
speaker.setChecked(false);
}
}
这说明checking==1
总是正确的,这很有意义,但如果我将其切换到:
if (checking == 1) {
speaker.setChecked(true);
} else if (checking != 1) {
speaker.setChecked(false);
}
这表示
正在检查!=1
也总是正确的。有人能帮忙吗?这只是编辑的逻辑。在第一个if语句中,您检查checking==1
,在第二个if语句中,您将否定该语句。编辑器将理解第二个if语句始终为true
我认为你应该把else如果
换成else
。对不起,我的英语不好。试试这个
int checking = 1;
boolean isChecked = false;
isChecked = ((checking == 1) ? true : false)
speaker.setChecked(isChecked)
您看到此警告的原因是: 您已经设置了
int checking=1
,您正在检查:
if(checking!=1)
这总是true
checking==1
,它也总是true
else if
条件将根本不执行
只有在运行时或在编译时使用某些条件尝试更改checking
的值时,才会删除警告
如果您只是想设置扬声器.setChecked(),可以执行以下操作:
int checking = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (checking != 1) {
speaker.setChecked(true);
} else if (checking == 1) {
speaker.setChecked(false);
}
}
speaker.setChecked(checking==1)
注意:这不会删除这两种情况下的警告,第二个
if
是没有意义的,因为它不会转到第一个if
的else
分支。这是建议你删除这些,只是提醒你安卓工作室有时会出错。我最近得到警告,条件'base==10'总是'true'。问题是,base
是一个受保护的变量,不是私有的,虽然在我的类中它总是10,但在子类中它会被更改。如果我盲目地听Android Studio并打开If语句,我会把事情分解成一行。这对AS来说是一个危险的警告。嗨,孩子,谢谢你的帮助。我确实自己做了“else”,但它一直跳过第一个if语句,所以我添加了“else if”来检查它为什么跳过它,它一直告诉我它总是正确的?或者干脆speaker.setChecked(checking!=1)
。然而,这并不能真正回答OP关于错误消息的含义的问题。