条件"如果"使用"&&"声明

时间:2018-04-07 20:26:06

标签: java android if-statement

当我想控制我想在SQLite数据库中插入的内容时,我遇到了问题。

我使用"如果"条件和声明"&&"那样:

 if (addDream.isPressed() && lucidbtn.isChecked()) {
        carnet.setText(editDream.getText().toString());
        carnet.setLucid(1);
        cn.insertNoteReve(carnet);
        editDream.setText("");
        xp = exp.xpUp(30);
        user.setExperience(xp);
        userDao.expUp(user);

    }

这是有效的,我的xp(这里是30)正确插入我的数据库。 但是,当我想添加第二个"&&"这样的陈述:

else if(addDream.isPressed() && lucidbtn.isChecked() && wild.isChecked()) {
        carnet.setText(editDream.getText().toString());
        carnet.setLucid(1);
        cn.insertNoteReve(carnet);
        editDream.setText("");
        xp = exp.xpUp(70);
        user.setExperience(xp);
        userDao.expUp(user);
    }

这不起作用,只插入30而不是70.我认为问题出在第二个"&&"陈述,因为我尝试了另一个没有" lucidbtn.isChecked"并且数值已在数据库中修改。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

通过放置else if,只会执行第一个条件,因为它首先匹配。

如果你想从特定的野外检查插入30或70,那么你可以使用三元和单个if语句

if(addDream.isPressed() && lucidbtn.isChecked()) {
    carnet.setText(editDream.getText().toString());
    carnet.setLucid(1);
    cn.insertNoteReve(carnet);
    editDream.setText("");
    xp = exp.xpUp(wild.isChecked() ? 70 : 30);
    user.setExperience(xp);
    userDao.expUp(user);
}

或者您需要单独检查此块中的if (wild.isChecked()),而不是所有条件的一部分