【问题标题】:Does this program end in an infinite loop? How can I tell?这个程序是否以无限循环结束?我怎么知道?
【发布时间】:2011-09-22 03:09:32
【问题描述】:

我运行程序,我看到的只是 Netbeans 下面的空白。

起初我以为它没有运行,然后我不小心运行了四个程序,Netbeans 崩溃了。所以我的第一个问题:它是一个无限循环,如果是,为什么?

据我所知,它是int = 00>=0 所以它应该以0 + 0 运行...如果int numberint sum 都为零,那么这是否意味着程序无法继续,因为它被循环零卡住了?但是为什么它不会多次显示0的输出而不是空白呢?

public static void main(String[] args) {

    int number = 0;
    int sum = 0;
    while (number >= 0 || number <= 10) {
        sum += number;
        number += 3;
        System.out.print(" Sum is " + sum);
    }
 }

【问题讨论】:

  • 虽然主要问题已得到解答,但我确实想指出为什么它在循环期间没有打印任何内容。 Java 在到达行尾之前不会将任何内容打印到控制台,无论是来自 System.out.println() 还是打印字符串中包含的“\n”。因为您使用的是打印,但没有使用回车,所以在程序退出之前您不会看到任何输出。我希望这对将来的调试有所帮助。
  • @Dogmatixed 很好的解释

标签: java loops while-loop


【解决方案1】:

自己思考逻辑。这个数字什么时候不会大于或等于 0?您知道您有一个 or 运算符 (||),并且您知道如果右边或左边的任何一个陈述为真,那么它将为真。也许你想在那里使用不同的运算符?

再次思考逻辑,因为它不会骗你。事实上,你应该用铅笔和纸从 0 开始浏览你的代码,看看纸上发生了什么,因为这会告诉你你的错误。

【讨论】:

  • 我完全没有看or语句..我一直在通过它,该死的我觉得很愚蠢。
【解决方案2】:

是的,这是一个无限循环,您可能的意思是:

while (number >= 0 && number <= 10)

否则,该数字将始终大于或等于零,并且始终会再次循环。

编辑:

number &gt;= 0 甚至没有必要。它只适用于:

while (number <= 10)

【讨论】:

  • 是的,我什至没有考虑 or 声明......现在感觉有点愚蠢,但谢谢
【解决方案3】:

是的,这将是一个无限循环 ||表示或

while (a || b) {
  //do something
}

您只需要满足任何一个条件(无论是 a、b 还是两者),while 循环就可以执行。

至于为什么一堆空格而不是一堆零,我不知道。

【讨论】:

    【解决方案4】:

    你在调试器中单步调试!!

    值得学习如何使用调试器,尤其是当您还没有手动发现错误时。

    【讨论】:

      猜你喜欢
      • 2012-08-29
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-08
      相关资源
      最近更新 更多