对编程来说是完全陌生的,我当时正在做一个项目,但我对如何使其工作感到困惑。请帮助我
boolean answer1 = true;
for (int i=0;i<q.questionbank.length;++i)
{ q.Question = input(q.questionbank[i]);
while(answer1 == true)
{
if (q.Question.equals(a.correctans) || (q.Question.equals(a.impossibleans) || (q.Question.equals(a.wrongans))))
{
score = printquiz(answer,score,q.Question);
answer1 = false;
}
else
{
print("Not a Valid Answer, please try again\n");
}
}
}
return score;
在这里,我有一个名为问题库和测验的类。 Correctans / impossibleans / wrongans是测验数据类型的一部分。而q.question是问题库的一部分。我对问题库数据类型的数组有疑问。我想使用for循环遍历问题,如果用户输入正确的答案,那么得分会上升。它适用于第一个问题,但不适用于第二个问题。通常,当他们回答正确时,我可以使用另一种方法printquiz,该方法具有决策语句以告知用户他们的答案是正确还是错误,并为其分配分数。但是在循环的第一次迭代之后,它甚至都没有使用该方法。我对正在发生的事情感到困惑。请帮助我
答案 0 :(得分:0)
这就是我要设置的方式。假设答案是错误的,直到得到答案为止。然后将其设置为true以退出循环。
for (int i = 0; i < q.questionbank.length; ++i) {
q.Question = input(q.questionbank[i]);
answer1 = false;
while (!answer1) {
if (q.Question.equals(a.correctans) || (q.Question.equals(a.impossibleans) || (q.Question.equals(a.wrongans)))) {
score = printquiz(answer, score, q.Question);
answer1 = true;
} else {
print("Not a Valid Answer, please try again\n");
}
}
}
答案 1 :(得分:0)
第二次无效,因为您将answer1
设置为false
,而再也没有将其设置回true
了。因此,在第一次到达if语句中的while
行代码之后,就不再进入answer1 = false
循环(=不再求真)。
要解决此问题,请尝试将answer1 = true
放在for循环中,而while循环之前。