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循环的第一次迭代之外硬编码呢?我想整个代码流程都需要重新访问