while循环和for循环

时间:2013-12-12 18:38:56

标签: loops for-loop while-loop programming-languages

一般情况下,while循环不仅仅是for循环的改述:

for( starting point; condition; excution code){}
//and while
starting point;
while(condition)
{excution code;
 }

如果这似乎是一个愚蠢的问题,我真的很抱歉。但我只是想知道是否有一种情况,它比使用更好。反之亦然。

4 个答案:

答案 0 :(得分:2)

所有for循环都可以重写为while循环,反之亦然。不同之处在于程序员的意图:你是否在条件为真时重复? ..或者你是在从什么东西迭代到什么东西?

答案 1 :(得分:1)

不是不是这样。两个循环都有不同的用途。 虽然循环通常在我们有无限数量的迭代时使用,而当我们有更确定的迭代次数时使用 循环。但是你可以将一个转换为另一个(虽然我不建议这样做)

另一个重要方面是在 for 循环中,迭代器的范围设置为for循环内部。

  

但我只是想知道是否有一个案例,它比使用更好。

我更喜欢或选择for而不是while因为它更具可读性(尽管有些人可能认为后者更具可读性。)而且还因为迭代器范围原因。

就相似性而言,循环类似于:

while (condition) 
{
   statements;
}

类似于

if (condition) 
{
   do 
   {
      statements;
   } while (condition);
}

当你不想使用任何计数器时你也可以使用,你的唯一动机就是完成条件。

答案 2 :(得分:1)

你是对的。每个for循环都可以重写为while循环,反之亦然。但是,就代码可读性而言,每个循环都有它的优点和缺点。

通常,如果你需要一个循环中的变量,直到达到一个条件,你就会使用for循环。

打印数组

for(int i = 0; i < array.length; i++) {
    print("Element " + i + ": " + array[i]);
}

如果你只是在等待一个条件,你更喜欢一个while循环:

从流中读取

while((String line = buffer.readLine()) != null) {
    print("Next line: " + line);
}

虽然语义相同,但我不希望看到这些循环:

打印数组

int i = 0;
while(i < array.length) {
    print("Element " + i + ": " + array[i]);
    i++;
}

从流中读取

for(String line = buffer.readLine(); line != null; line = buffer.readLine()) {
    print("Next line: " + line);
} 

答案 3 :(得分:0)

目的是使用for循环进行固定数量的迭代,并使用while循环进行无限次迭代。

事实上,正如您所预料的那样,可以将每个for循环编写为具有先前初始化的while循环。 (但在大多数语言中反过来也是如此。)

就个人而言,我倾向于使用while循环,除非我在数组或字符串上进行迭代,其大小如果已知。

另请注意,在Java中,有一种形式的for循环看起来像:

 for (E elem : collection) { ... }

通过类型为E的元素的可迭代集合。这是一个非常好的事情,非常直观,并且,它可以防止您通过一个或重新初始化错误。