Java do while循环具有多个未正确执行的条件
我必须编写一个Magic 8 ball程序来解释用户输入错误,我必须使用一个循环来做到这一点Java do while循环具有多个未正确执行的条件,java,loops,do-while,Java,Loops,Do While,我必须编写一个Magic 8 ball程序来解释用户输入错误,我必须使用一个循环来做到这一点 boolean okay; do { System.out.printf("What is your question?\n"); questionStr = keyboard.nextLine(); int length = questionStr.length(); if (questionStr.length() == 0)
boolean okay;
do {
System.out.printf("What is your question?\n");
questionStr = keyboard.nextLine();
int length = questionStr.length();
if (questionStr.length() == 0) {
System.out.println("Not allowed.");
okay = false;
} else if (!(questionStr.charAt(length - 1) == '?')) {
System.out.println("Add question mark.");
okay = false;
} else if (questionStr.length() > 60) {
okay = false;
}
okay = true;
} while (!okay);
当我运行代码并将其设置为空字符串时,它不会打印出来,但是它仍然运行代码的其余部分,并且不会循环回并询问“What is your question?”问号也会发生同样的情况;它打印出“添加问号”,但不会像预期的那样循环返回。如果我提出一个超过60个字符的问题,代码仍然会执行,并且不会返回并继续询问用户“您的问题是什么?”直到代码少于60个字符。我试图找出我在这里做错了什么。移动
ok=true在你的
如果语句否定它之前
okay = true;
if (questionStr.length() == 0) {
System.out.println("Not allowed.");
okay = false;
} else if (!(questionStr.charAt(length - 1) == '?')) {
System.out.println("Add question mark.");
okay = false;
} else if (questionStr.length() > 60) {
okay = false;
}
如前所述,您在条件
之前无条件地将ok
设置为true
,而(!ok)代码>因此循环总是结束。在ok=true之前添加else
代码>。基本调试将在第一分钟内发现将ok
设置为true
的问题。这不是一个在线调试器。欢迎使用堆栈溢出!看起来您需要学习使用调试器。请随便吃点。如果您以后仍然有问题,请随时回来提供更多详细信息。