每当条件失败时,我都无法循环我的代码。如果用户输入为真,它只打印两个代码块

I can't loop my code whenever condition fails. It just prints both blocks of code if the user input is true

我是 java 的初学者,我想重新循环一遍,但我不知道该怎么做。我已经尝试了一个 while 循环,但它并没有很好地工作,它打印了两个代码块。应该发生的是当我键入“退出、退出或退出”时,它应该终止。相反,它还会打印消息“无法终止程序”。我应该怎么办?我也试过一个 if 语句,它工作正常,但我不知道如果条件失败如何循环它。

import java.util.Scanner;

public class fortytwo {

    public static void main(String[] args) {
    
        Scanner scanner = new Scanner(System.in);
        System.out.println("Hi there!");
        String quit = scanner.next();
                
        while (quit.equals("quit") || quit.equals("QUIT") || quit.equals("Quit")) {
            System.out.println("You terminated the program");
            break;
        } 
        System.out.println("You failed to terminate the program.\n To quit, type (quit), (Quit), or (QUIT)");
            
        scanner.close();
    }
}

您正在使用一个不需要循环的循环。另外break只是退出循环,循环结束后继续执行。将 while 替换为 if/else:

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Hi there!");
    String quit = scanner.next();
            
    if(quit.toLowerCase().equals("quit")) {
        System.out.println("You terminated the program");
    } else {
        System.out.println("You failed to terminate the program.\n To quit, type (quit), (Quit), or (QUIT)");
    }
    scanner.close();
}

这不会再次提示您的第二个输出提示的输入,但您的代码也不会。

循环的条件是检查whilequit不等于"quit"(不管大小写),所以消息"You failed to terminate the program..." 应该在循环体中打印,直到输入适当的命令。

此外,可以省略对 quit 的赋值,建议在 constant/literal 值上调用方法 equalsIgnoreCase 因为在一般情况下它有助于避免 NullPointerException .

while (!"quit".equalsIgnoreCase(scanner.next())) {
    System.out.println("You failed to terminate the program.\n To quit, type (quit), (Quit), or (QUIT)");
}
System.out.println("You terminated the program");