【问题标题】:Java unending while loopJava 无休止的 while 循环
【发布时间】:2015-09-25 01:07:58
【问题描述】:

好的,所以当谈到 Java 时,我完全是个菜鸟,如果这是一个愚蠢的问题,我深表歉意。 我有一个这样的while循环:

do {
  //quiz questions, lose a life when you get one wrong
} while (livesRemain > 0) 

但是,当您失去所有生命时,循环不会结束,而是会继续循环,即使所有生命都失去了。我会使用除了 while 之外的其他东西,或者当达到某个条件时会结束吗?

问题是这样的:

 System.out.print(question1) 
    if (guess == 1) {
    System.out.print("Correct")
    score++;
    } else {
    livesRemain--;
}

当你完成测验时,它会打印你的分数,如果你低于 0,它最终会变成负数。

【问题讨论】:

  • 嗯...您忘记了循环体中最重要的部分:更改变量livesRemain 的语句。也许它不存在?
  • 如果您希望我们发现您代码中的错误,请发布代码。
  • 这个 sn-p 看起来是正确的。你能分享一下失去生命的实际代码吗?那里好像出了点问题。
  • while-loop 看起来不错。您确定livesRemain 实际上是递减的吗?也许存在两个同名的变量。虽然没有代码很难分辨
  • 我 100% 确定您的循环没有问题。您也不需要使用其他类型的循环。宇宙中循环没有结束的唯一原因是因为livesRemain 仍然大于 0。

标签: java loops while-loop


【解决方案1】:

您应该尝试以下方法:

do {
      if(wrong) 
        livesRemain--;
} while (livesRemain > 0) 

【讨论】:

    【解决方案2】:

    循环没有结束的原因:

    • 当您在 do-while 循环中时,只要条件满足(即liveRemaining > 0),它就会一直留在循环中
    • 变量livesRemaining在循环外递减。
    • 因此,livesRemaining 始终 > 0,因为您没有在循环中的任何位置更新它。
    • 导致循环未结束。

    我会使用除了 while 以外的其他东西吗?或者 do while 会在达到某个条件时结束?

    问题不在于选择合适的循环。该问题是由未更新的终止条件引起的。要解决这个问题,请将您的代码带入循环,以便满足终止条件。

    do{
        //Ask question..
        if(guess == 1)
            System.out.println("Correct");
        else
            livesRemain--;     //Update livesRemain
    }while(livesRemain > 0);   //Keeping asking questions till lives == 0   
    

    【讨论】:

      猜你喜欢
      • 2021-12-30
      • 1970-01-01
      • 2017-08-29
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 2015-07-07
      • 2013-02-01
      • 2014-07-04
      相关资源
      最近更新 更多