为什么布尔值在 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");
?
为什么布尔值在 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");
?