Zig*_*ggy 67 loops coding-style control-flow
什么时候应该使用for循环而不是while循环?
我认为以下循环是相同的,除了它们的语法.如果是这样,为什么选择一个而不是另一个呢?
int i;
for (i = 0; i < arr.length; i++) {
// do work
}
int i = 0;
while (i < arr.length) {
// do work
i++;
}
Run Code Online (Sandbox Code Playgroud)
jjn*_*guy 102
在您的情况下,除了for循环中少一行代码之外,您不会获得太多收益.
但是,如果你像这样声明循环:
for(int i = 0; i < x; i++)
Run Code Online (Sandbox Code Playgroud)
您设法保持i在循环的范围内,而不是让它转义到代码的其余部分.
此外,在while循环中,您有3个不同位置的变量声明,条件和增量.有了for循环,它就在一个方便,易读的地方.
最后的想法:
一个更重要的说明.两者之间存在语义差异.虽然循环通常意味着具有无限次迭代次数.(即直到文件被读取..无论其中有多少行),for循环应具有更确定的迭代次数.(循环遍历集合中的所有元素,我们可以根据集合的大小对其进行计数.)
Ree*_*sey 85
有一个理由去选择for过while:可读性.
通过使用for循环,您明确表示您的意图是执行某些类型的操作,需要初始化,"步骤"操作和完成条件.
随着while,在另一方面,你只说你需要完成条件.
Otá*_*cio 35
当我不一定需要计数器时,我使用'while',例如当你从文件中读取并且你正在等待达到EOF时.在这种情况下,'for'可能不是最好的选择.当你浏览阵列上的项目时,我宁愿使用'for',因为它更好地传达了意图.
sup*_*cat 27
for()和while()循环之间的一个值得注意的区别是while()循环中的"continue"语句将分支到循环的顶部,而for()循环中的一个将分支到第三个部分of()子句[条件之后的那个,通常用于碰撞变量].
Cap*_*ffe 16
作为一名教师,我一直在思考各种形式和形式; 我的建议总是归结为
for-loops用于计数.数数,倒计时.while/ do-whileconstructs适用于所有其他条件. c!=EOF,diff<0.02等等.迭代器/枚举器是非常适合for循环的计数器.即你的int=0; while( ... )眼睛是可怕的.
Bab*_*fas 15
为什么选择Coke over Pepsi?
在WHILE和FOR循环之间,您可以互换使用它们.要成为纯粹主义者,您可以根据条件的性质做出决定.如果您正在执行基于计数的循环,那么FOR循环将是最有意义的.
for( cur = 0; cur < myList.Length; cur++ ){
doSomething( myList[cur] );
}
Run Code Online (Sandbox Code Playgroud)
如果您正在执行基于逻辑的循环,那么WHILE将实现最干净的实现
Iterator i = myObject.getIterator();
while( i.hasNext() ){
doSomething( i.next() );
}
Run Code Online (Sandbox Code Playgroud)
正如你所说,原因是语义和美学,而不是性能(他们编译的代码往往非常相似).
也就是说,for通常在循环中具有已知的迭代次数,而while暗示条件不一定与您在循环中所做的内容相关,或者您在开始时不知道有多少次迭代是.
通常,我总是喜欢循环,即使循环与计数无关的情况,因为它将循环的维护本地化在一个位置.当其他人出现并决定添加/修改循环时,如果他们使用FOR循环,那么进行修改的人通常可以确信,只要他们不会弄乱FOR表达式中的项目,他们不会在循环中打破迭代.
但是,像while循环这样的东西需要程序员完全解析循环体,并理解它是如何迭代的,以确保它们在进行更改时保持循环维护代码不变,并且顺序正确.
因此,在我只有效地需要FOR的中间部分的情况下,我只使用WHILE.
| 归档时间: |
|
| 查看次数: |
49478 次 |
| 最近记录: |