【发布时间】:2015-10-30 01:07:16
【问题描述】:
我已经创建了一个 if 语句,而在你做对之前不断提出问题是正确的。但是,就我而言,这不是一个选择。我已经实现了一个具有最大尝试次数的计数器,如果循环运行 3 次并且您仍然出错,则打印“您弄错了”并转到下一个问题。如果他们在 3 次尝试内答对了,“转到下一个问题”,分数 ++ 就在那里记录分数。 score++ 必须只为正确答案保留分数,这就是为什么它在 while (true) 之下。如果有人可以帮助我,那就太棒了。我对改进循环的不同方法持开放态度。 谢谢!
这是循环:
int count = 0;
int maxTries = 3;
do {
println(q1.PrintQuestion());
yourAnswer = readLine("Your answer: ");
if ((q1.IsAnswerCorrect(yourAnswer)) && (count < maxTries))
break;
else
println("You got it wrong! \n");
count++;
} while (true);
score++;
println("You got it right! \n");
编辑: 感谢这里的答案,这是我的工作循环。现在我遇到的问题是,如果答案是正确的,它不会进入下一个问题,直到我正确回答了两次,如果我将 maxTries 设置为 3,它会进行 4 次,这就是我减少到 2 次的原因。如果我输入正确,最后一次最大尝试,我必须回答两次。
int count = 0;
int maxTries = 2;
do {
println(q1.PrintQuestion());
yourAnswer = readLine("Your answer: ");
if ((q1.IsAnswerCorrect(yourAnswer)) || (count >= maxTries))
break;
else
println("You got it wrong! \n");
count++;
} while (true);
score++;
println("You got it right! \n");
【问题讨论】:
-
在这种情况下
do { ... } while(true);和while(true) { ... }是相同的。后者的使用对可能需要阅读您的代码的其他人更有益。在相关主题上,使用boolean变量而不是while(true) { if(...) { break; } }将使您在将来需要更新此代码时受益。
标签: java if-statement while-loop do-loops