Android: если оператор в методе не работает - PullRequest
2 голосов
/ 05 марта 2011

Я пытаюсь ограничить переменные значениями выше нуля с помощью оператора 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 ]

7 голосов
/ 05 марта 2011

Одна из ваших переменных больше 0.

Прочитайте оператор if как "если h1 больше нуля, ИЛИ w1 больше нуля, ИЛИ ..." или проще ", если какой-либо из h1, w1, h2, w2 больше нуля".

Я думаю, что вы хотите, И Вы хотите, чтобы он читал "если h1 больше нуля, а w1 больше нуля ..."

Оператор для "и" является &&, а не ||.

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

Кроме того, комментарий @ Mahesh является правильным - если у вас есть логическое утверждение, которое ведет себя не так, как вы думаете, выведите переменные, используемые в этом утверждении, и «запустите» логику этого утверждения в вашей голове с этими переменными. Очень быстро станет ясно, что не так.

2 голосов
/ 05 марта 2011

Я думаю, что вы хотели использовать логическое И (&&) вместо ИЛИ (||)

То, что вы разместили, пройдет проверку, когда ЛЮБОЕ измерение превысит ноль.

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();
    }

}

Это гарантирует, что все размеры больше нуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...