Android:如果方法中的语句不起作用

时间:2011-03-04 23:41:20

标签: java android if-statement

我正在尝试使用if语句将变量限制为大于零,并且以下代码只是运行,好像if语句不存在:

private void startGame(int h1, int h2, int w1, int w2) {
        this.h1 = h1;
        this.w1 = w1;
        this.h2 = h2;
        this.w2 = w2;
        Intent intent = new Intent(this, Game.class);
        if((h1 > 0) || (w1 > 0) || (h2 > 0) || (w2 > 0)){
            startActivity(intent);
            }
        else {
            finish();
        }

}

2 个答案:

答案 0 :(得分:7)

您的一个变量大于0。

将if语句读为“如果h1大于零或者w1大于零OR ...”或更简单地“如果h1,w1,h2,w2中的任何一个大于零”。

我认为你想要的是和。你希望它读“如果h1大于零并且w1大于零......”

“and”的运算符为&&,而不是||

if(h1 > 0 && w1 > 0 && h2 > 0 && w2 > 0){

另外,@ Mahesh的评论是正确的 - 如果你的逻辑陈述不符合你的想法,打印出该语句中使用的变量,并用这些变量“运行”你脑中的语句逻辑。很快就会明白什么是错的。

答案 1 :(得分:2)

我认为您打算使用逻辑AND(&&)代替OR(||)

当任何一个维度高于零时,您发布的内容将通过检查。

private void startGame(int h1, int h2, int w1, int w2) {
    this.h1 = h1;
    this.w1 = w1;
    this.h2 = h2;
    this.w2 = w2;
    Intent intent = new Intent(this, Game.class);
    if((h1 > 0) && (w1 > 0) && (h2 > 0) && (w2 > 0)){
        startActivity(intent);
        }
    else {
        finish();
    }

}

这将确保所有维度都大于零。