do while循环中的java equalsIgnoreCase()总是返回false;

do while循环中的java equalsIgnoreCase()总是返回false;,java,do-while,Java,Do While,我只是想确定用户是否输入了YES或NO值(尽管不考虑大写,因此equalsIgnoreCase())。但是,无论我输入是或否,do while都不会中断,例如 public int addInformation() { final int YES = 1; final int NO = 0; String userDecision = ""; try(Scanner scanner = new Scanner(System.in)) { Syst

我只是想确定用户是否输入了YES或NO值(尽管不考虑大写,因此
equalsIgnoreCase()
)。但是,无论我输入是或否,do while都不会中断,例如

public int addInformation() {
    final int YES = 1;
    final int NO = 0;
    String userDecision = "";

    try(Scanner scanner = new Scanner(System.in)) {
        System.out.println("Add Information Now? [YES/NO]");

        do {
            System.out.println("Please Enter YES or NO ");
            userDecision = scanner.nextLine();
        } while(!userDecision.equalsIgnoreCase("yes") |
                           !userDecision.equalsIgnoreCase("no"));
    }
    if(userDecision.equalsIgnoreCase("yes")) {
          return YES;
    }
    return NO;
}
我正在寻找“当输入值不等于‘是’或‘否’时,再次请求数据”的行为。然而,我的代码建议“不管键入什么,让我们只是为了好玩而继续循环…”我哪里出错了,Stack?谢谢

这种情况

while (!userDecision.equalsIgnoreCase("yes") |
                       !userDecision.equalsIgnoreCase("no"))
这永远是真的。任何字符串必须不等于“是”或“否”

如果要检查字符串是否不等于其中任何一个,您的意思是:

while (!userDecision.equalsIgnoreCase("yes") &&
                       !userDecision.equalsIgnoreCase("no"))

你的情况不正确。如果其中一个条件为
false
,则需要结束循环(因此需要and)。大概

while(!userDecision.equalsIgnoreCase("yes") &&
                       !userDecision.equalsIgnoreCase("no"));

你说得对,先生!愚蠢的错误,但非常感谢!