有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java用户输入陷入循环

我今天刚开始学习java,决定做一个选择题测验。我遇到的问题是,即使是正确的选择“a”或“b”,用户输入也会陷入循环。这是我的代码:

    Scanner input = new Scanner(System.in);

    String answer = input.nextLine();

    while(!answer.equals("a") || !answer.equals("b")) {
        System.out.println("Please enter one of the correct choices");
        answer = input.nextLine();
    } 

有人能告诉我我做错了什么吗

谢谢


共 (3) 个答案

  1. # 1 楼答案

    错误在于在while循环条件中使用OR operator ("||")。当这些条件为真时,循环将继续执行。由于您正在检查用户输入是否不同于“a”或“b”,因此该条件将始终为真,因为输入不能同时为“a”和“b”

    在这种情况下,应该使用AND operator ("&&")。见下文:

    while(!answer.equals("a") && !answer.equals("b")) {
    

    如果输入同时不同于“a”和“b”,则返回true(从而继续执行循环)

    编辑:

    Alerra还提出了一种非常有趣的方法来实现上述目标。见下文:

    while(!(answer.equals("a") || !answer.equals("b"))) {
    
  2. # 2 楼答案

    问题在于| |运算符,如果答案是A,则答案不是B,反之,如果答案是B,则答案不是A

  3. # 3 楼答案

    while(!(answer.equals("a") || !answer.equals("b")))
    

    你可以使用OR的真值表来思考这个问题:

    True True = True
    True False = True
    False True = True
    False False = False
    

    因此,如果用户没有回答AB,您希望保持while循环运行,反转False,以便循环继续。如果用户回答AB中的任何一个,它将打破循环

    逆表或真值表:

    True True = False
    True False = False
    False True = False
    False False = True