我在抓住区别之间有点麻烦! ||和&&当他们在一段时间内进行测试时。在下面的示例中,我希望程序提出一个问题“你看到屏幕上有四个吗?”然后,如果该人回答不,该程序继续并继续询问。如果用户输入答案“是”则程序退出但我的程序不退出。
在我的while循环条件中,我告诉while循环只有当i小于5并且问题的答案不是肯定时才继续?怎样才是正确的思考方式! ||和&&在while循环的上下文中使用时?
import acm.program.*;
public class WhileConditionTestProgram extends ConsoleProgram{
public void run(){
String question = ("do you see a four on the screen? ");
int i = 1;
while(i <= 20 && !(question.equals("yes"))){
String question = readLine("do you see a 4 on the screen?: ");
i++;
}
}
}
答案 0 :(得分:4)
除了明显的变量重新声明问题之外,您还应该考虑使用do-while
循环,因为您至少要读取一次用户输入。
因此,您可以更好地将循环更改为:
int i = 0;
String answer = "";
do {
answer = readLine("do you see a 4 on the screen?: ");
i++;
} while (i <= 20 && !answer.equalsIgnoreCase("yes"));
注意:我使用equalsIgnoreCase
只是为了更安全的一面,因为您正在阅读来自用户的输入。你永远不知道它传递的是什么字母组合。
答案 1 :(得分:3)
在你的状态下你正在测试答案而不是问题尝试:
while(i <= 20 && !(answer.equals("yes"))){
answer = readLine("do you see a 4 on the screen?: ");
i++;
}
答案 2 :(得分:1)
此代码存在问题:
String question = ("do you see a four on the screen? ");
int i = 1;
while(i <= 20 && !(question.equals("yes"))){
String question = readLine("do you see a 4 on the screen?: ");
i++;
}
您是否正在重新定义while函数中的question
变量。例如,这将打印“1”,而不是“2”:
String question = "1";
int i = 1;
while (i <= 20) {
String question = "2";
i++;
}
System.out.println("Question is: " + question); // This will print "1"!
当您说String question = "2"
时,您宣布一个名为question
的全新变量并将其设置为“2”。当你到达while循环结束时,该变量超出范围,程序将抛出其数据。原始question
未受影响。以下是该代码段的更正版本:
String question = ("do you see a four on the screen?");
int i = 1;
while(i <= 20 && !(question.equals("yes"))){
question = readLine("do you see a 4 on the screen?: ");
i++;
}
答案 3 :(得分:0)
这些运算符在while循环中的工作方式与在其他任何地方工作的方式相同。
&amp;&amp;和||运算符对两个布尔表达式执行条件AND和条件OR运算。
试试这个:
String answer = "";
int i = 1;
while(i <= 20 && !(answer.equalsIgnoreCase("yes"))){
answer = readLine("do you see a 4 on the screen?: ");
i++;
}