Java循环仅针对最大尝试运行

时间:2015-10-30 01:07:17

标签: java if-statement while-loop do-loops

我已经创建了一个if语句,但是在你做对了之前继续问问题是正确的。但是,在我的情况下,这不是一个选项。我已经实现了一个具有最大尝试次数的计数器,如果循环运行3次并且你仍然错了,那么打印"你弄错了#34;然后转到下一个问题。如果他们在3次尝试中做到了正确,那么,请转到下一个问题"得分++就是为了跟踪得分。得分++必须只保留正确答案的分数,这就是为什么它在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");

4 个答案:

答案 0 :(得分:2)

计数需要在循环内而不是外循环增加。此外,您检查是否达到最大值或提供正确答案的条件不正确:

if ((q1.IsAnswerCorrect(yourAnswer)) || (count >= maxTries))
    break;
else
    println("You got it wrong! \n");
    count++;

在提供正确答案或达到maxTries时将停止。

答案 1 :(得分:0)

您应该在count循环中增加while。然后,您的代码可以检测是否已达到最大尝试次数。

一旦达到最大尝试次数,您(大概)也需要退出循环。否则,你会得到一个你无法突破的循环。也就是说,一旦达到最大尝试次数,即使答案正确,循环也不会退出。

如果你将增量分数留在while循环之外,它会在两种情况下都加分,即。答案是正确的或尝试次数用完了。它也应该进入循环内部。

int count = 0;
int maxTries = 3;

do {
    println(q1.PrintQuestion());
    yourAnswer = readLine("Your answer: ");
    if (q1.IsAnswerCorrect(yourAnswer)) {
        println("You got it right!\n");
        score++;
        break;
    } 
    println("You got it wrong!\n");
    count++;
    if (count > maxtries) {
        println("You ran out of tries.\n");
        break;
    }
} while (true);

答案 2 :(得分:0)

你的计数++需要在循环中。否则你的条件(count&lt; maxTries)正在使用,因为count ++在循环运行时永远不会递增。

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++ inside the loop
    count++;
} while (true);
score++; 
println("You got it right! \n");

答案 3 :(得分:0)

尝试在循环中插入得分++和计数++行。