当前位置:  开发笔记 > 编程语言 > 正文

关于循环终止时计数器变量的混淆

如何解决《关于循环终止时计数器变量的混淆》经验,为你挑选了1个好方法。

对于这段代码:

int number = 25;
int i;

boolean isPrime = true;
for (i = 2; i < number && isPrime; i++) {
  if (number % i == 0) {
    isPrime = false;
  }
}

System.out.println("i is " + i + " isPrime is " + isPrime);

我的印象是,输出会是下:"i is 5 isPrime is false",从何时起i=5,number % i == 0true,这样的变量isPrime成为false循环将无法继续.

所以当循环返回时

for (i = 2; i < number && isPrime; i++)

它不会增加i,因为条件不再有效(i < number && isPrime).这是怎么回事?



1> Willem Van O..:

我认为你以错误的方式理解循环的概念.一个for结构循环:

for(init; cond; inc) {
    body
}

工作原理如下:

    首先init执行;

    接下来评估条件,如果条件是true,则转到3,否则,结束循环.

    body执行

    inc被执行(条件无论是否成立);

    转到2.

正如指定的那样,增量(对于您的示例,i++始终在执行之后调用body,无论条件是否成立.因此,您可以将上述for循环重写为:

for(init; cond;) {
    body;
    inc
}

(所以在for标题处有一个空的增量).在这里,编译器无法消除body和之间的歧义inc.for循环的语法以这样的方式构造,使得程序员不会忘记执行增量,这是通常在while循环中发生的典型错误.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有