为什么布尔值在 else 片段中没有改变它的值?

Why Boolean value doesn't change its value in else snippet?

为什么布尔值在 else 代码段中没有改变,因为重写应该发生在 else 主体的 keepGoing 变量中,问题是什么?

package com.company;
import java.util.Scanner;
public class Main {

    public static void main(String[] name) {
        Scanner display = new Scanner(System.in);
        StringBuilder check = new StringBuilder();
        boolean keepGoing = false;

        do{
        System.out.println("please insert your name to check if it is valid or not:");
        String Name = display.next();

            if(Name.equals("alex")) {
                System.out.println("it is valid");
                keepGoing = false;
            }


            else {
                System.out.println("it is not valid");
                System.out.println("do you want to continue: yes/no");
                check.append(display.next());
                keepGoing = check.equals("yes");
            }
        } while(keepGoing);


    }
}

你收到错误了吗? 如果不是,可能是因为 check 不等于 yes。 您可以在 else 语句中将 keepGoing 设置为 true 而不必担心它。

keepGoing = check.equals("yes");

这是将 StringBuilder 与 String 进行比较。他们不会相等。

无论如何,documentation 表示 StringBuilder 正在使用 Object.equals(),这意味着比较是基于对象标识,而不是相等性。

最接近我推断的你的意图

keepGoing = check.toString().equals("yes");

但我不太确定为什么首先要使用 StringBuilder。为什么不

String answer = display.next();
keepGoing = answer.equals("yes");

?