Java 当条件不满足时执行';不要停止循环

Java 当条件不满足时执行';不要停止循环,java,Java,我已经编写了一个刽子手游戏,其中包含一个do-while循环,不断向用户索要字母,直到他们解出单词或耗尽生命。奇怪的是,当条件满足时,循环不会停止 下面是包含循环的游戏逻辑的实现: String letter; int result = 0; do { displayWord(); System.out.println("Please enter a letter: "); letter = scan.next().toLowerCase(); if (le

我已经编写了一个刽子手游戏,其中包含一个
do-while
循环,不断向用户索要字母,直到他们解出单词或耗尽生命。奇怪的是,当条件满足时,循环不会停止

下面是包含循环的游戏逻辑的实现:

String letter;
int result = 0;

do {
    displayWord();

    System.out.println("Please enter a letter: ");
    letter = scan.next().toLowerCase();

    if (letter.matches("[a-z]")) {
        result = hg.process(letter);
        displayResult(result);
    } else {
        System.out.println("Sorry, not a valid input.");
    }
}
while(result != 2 || result != -2); 
变量结果是从
过程
方法中获取返回值。 下面是实现

public int process(String letter) {
    boolean found = false;

    //... some code here

    if(!found) {
        if(lifeLine == 0) {
            return gameOver; // no lives left
        } else {
            lifeLine--;
            return wrong; // wrong guess
        }
    } else if (found && this.answer.equals(this.rightAnswer)) {
        return complete; // complete game
    } else {
        return right; // right answer, but incomplete game
    }
}
这可能是我返回值的方式导致循环继续循环吗?我已经这样声明了这些值:

public static final int right = 1;
public static final int wrong = -1;
public static final int complete = 2;
public static final int gameOver = -2;
从逻辑上讲,

!(result == 2 && result == -2)
这永远是一个真实的表达


情况可能是这样的

!(result == complete || result == gameOver)
当适用与上述相同的法律时

result != complete && result != gameOver
(使用常量-尽管我更喜欢像GAMEOVER这样的大写符号-而不是神奇的数字也使代码更容易阅读。)

逻辑上

!(result == 2 && result == -2)
这永远是一个真实的表达


情况可能是这样的

!(result == complete || result == gameOver)
当适用与上述相同的法律时

result != complete && result != gameOver
(使用常量——尽管我更喜欢像GAMEOVER这样的大写符号——而不是神奇的数字也使代码更易于阅读。)

让我们考虑一下。如果结果为2,则OR的右侧部分为真(结果不等于-2)。如果结果为-2,则OR的左侧为真(结果不等于2)


让我们考虑一下。如果结果为2,则OR的右侧部分为真(结果不等于-2)。如果结果为-2,则OR的左侧为真(结果不等于2)。

好的,我知道你在那里做了什么。我认为使用| |意味着如果其中一个条件是真的,它将被评估为真的。@Nathan它是真的。。但是,对内部条件的否定可能会使人们立即产生期望:)因此,我通常会将否定推到表达式的外部,并/或用
&&
重写它。感谢您为我澄清我的问题。我以后一定会记住这一点。好的,我知道你在那里做了什么。我认为使用| |意味着如果其中一个条件是真的,它将被评估为真的。@Nathan它是真的。。但是,对内部条件的否定可能会使人们立即产生期望:)因此,我通常会将否定推到表达式的外部,并/或用
&&
重写它。感谢您为我澄清我的问题。我以后一定会记住这一点。