Android Studio-条件始终为真?

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

这将是我第一次发布问题,因为我找不到答案。我的if/else语句发生了一些非常奇怪的事情。在过去的一周里,我的代码工作得很好,但最近它不断告诉我,一个语句总是正确的

我的代码如下:

    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关于错误消息的含义的问题。