Java:if语句,不等于中断程序

Java:if语句,不等于中断程序,java,Java,我不明白为什么我的代码不起作用 如果不等于“是”或“否”区域,则该区域似乎正在断开 这是我的密码: public static void main(String[] args) { // TODO code application logic here Scanner user_input = new Scanner(System.in); String name; System.out.println("Hello, what is your name?")

我不明白为什么我的代码不起作用

如果不等于“是”或“否”区域,则该区域似乎正在断开

这是我的密码:

public static void main(String[] args) {
    // TODO code application logic here

    Scanner user_input = new Scanner(System.in);

    String name;
    System.out.println("Hello, what is your name?");
    name = user_input.next();

    System.out.println("");

    String name_answer;
    System.out.println("Your name is " + name + ". Is this correct? (yes/no)");
    name_answer = user_input.next();

    System.out.println("");

    if (!name_answer.equals("yes" + "no")) { 
        System.out.println("Answer not valid. Please input again.");
        name_answer = user_input.next();
        while (!name_answer.equals("yes" + "no")) {
            System.out.println("Answer not valid. Please input again.");
            name_answer = user_input.next(); } }

    if (name_answer.equals("yes")) {
        System.out.println("Thank you, " + name + ". Please proceed to the next question.");
    } else if (name_answer.equals("no")) {
        System.out.println("Please reinput your name correctly.");
        while (name_answer.equals("no")) {
            String name_again;
            System.out.println("");
            System.out.println("What is your correct name?");
            name_again = user_input.next();

            System.out.println("");

            System.out.println("Your name is " + name_again + ". Is this correct? (yes/no)");
            name_answer = user_input.next();  }
如果我注释掉not equals代码块(如下所示),程序就会工作。但是,随着代码块的插入,程序将中断

    if (!name_answer.equals("yes" + "no")) { 
        System.out.println("Answer not valid. Please input again.");
        name_answer = user_input.next();
        while (!name_answer.equals("yes" + "no")) {
            System.out.println("Answer not valid. Please input again.");
            name_answer = user_input.next(); } }

我的目标是重新输入任何不等于“是”或“否”的答案,而“是”或“否”则将程序带到另一个步骤。谢谢您的帮助。

代码的技术问题是您使用的是串联而不是逻辑运算符
“yes”+“no”
的计算结果为
“yesno”
,这可能永远不会匹配您的输入字符串

更重要的是,问题在于您正试图将两个布尔求值捆绑成一个。从逻辑上讲,如果答案不是“是”且答案不是“否”,则您希望继续。在Java语法中:

if (!name_answer.equals("yes") && !name_answer.equals("no")) {
如果要一次测试多个值,可以使用以下快捷方式:

if (!Arrays.asList("yes", "no", "foo", "bar").contains(name_answer)) {

你认为“是”+“否”是什么意思?您认为“breaks”是什么意思?本质上,您的代码询问您的if和while循环条件以检查:if名为name_answer的字符串变量不等于“yesno”。我不相信这是你的意图。仔细阅读这个操作符,你可能也会从阅读这个方法中受益。如果有人输入“否”,然后在下次你问他们时输入胡言乱语怎么办?为什么要在while循环的第一次迭代之外硬编码呢?我想整个代码流程都需要重新访问