何时使用while循环而不是循环

时间:2011-07-15 17:00:22

标签: java while-loop

我正在学习java以及android。几乎所有我们可以执行的操作都会循环我们可以循环执行的操作。

我发现了一个简单的条件,即使用while循环优于循环

如果我必须在我的程序中使用counter的值,那么我认为while循环优于for循环

使用while循环

int counter = 0;
while (counter < 10) {
    //do some task
    if(some condition){
        break;
    }
}
useTheCounter(counter); // method which use that value of counter do some other task

在这种情况下,我发现while循环优于for循环,因为如果我想在for循环中实现相同,我必须将counter的值赋给另一个变量。

但是当while循环优于循环

时,是否存在任何特定情况

14 个答案:

答案 0 :(得分:14)

for循环只是一种特殊的while循环,它恰好处理递增变量的问题。您可以使用任何语言的for循环模拟while循环。它只是语法糖(除了py for实际上是foreach)。所以不,没有特定的情况,其中一个比另一个好(尽管出于可读性的原因,当你进行简单的增量循环时,你应该更喜欢for循环,因为大多数人都可以很容易地知道发生了什么。) / p>

因为可以表现得像:

while(true)
{
}

for(;;)
{
}

虽然可以表现得像:

int x = 0;
while(x < 10)
{
    x++;
}

for(x = 0; x < 10; x++)
{
}

在你的情况下,是的,你可以把它重写为像这样的for循环:

int counter; // need to declare it here so useTheCounter can see it

for(counter = 0; counter < 10 && !some_condition; )
{
    //do some task
}

useTheCounter(counter);

答案 1 :(得分:12)

一个主要区别是while循环最适合您提前不知道需要执行的迭代次数。在进入循环之前如果知道这一点,可以使用for循环。

答案 2 :(得分:5)

forwhile是等效的,只是针对同一事物的不同语法。


你可以改变这个

while( condition ) {
   statement;
}

到此:

for( ; condition ; ) {
    statement;
}

另一种方式:

for( init; condition; update) {
    statement;
}

相当于:

init;
while(condition) {
    statement;
    update;
}

所以,只需使用哪个看起来更好,或者更容易说话。

答案 3 :(得分:3)

记住,

  

使用for循环完成的所有操作都可以使用while循环完成,但不是   所有while循环都可以用for循环实现。

WHILE:

当退出条件与循环次数或控制变量

无关时,使用

While-loops

FOR:

for-loops只是编写while循环的一种捷径,而初始化语句,控制语句(何时停止)和迭代语句(如何处理控制因素后)每次迭代)。

例如,

基本上,for循环只是while循环的简写,任何for循环都可以从:

转换
for([initialize]; [control statement]; [iteration]) {
   // ...
  }

[initialize]; 
while([control statement]) { 
   //Do something [iteration];
   } 

是一样的。

答案 4 :(得分:2)

for是有限的,在某种意义上它会在元素耗尽时循环完成循环....

如果不满足条件或循环中断,则可以是无限的

修改

我的错误...... for 可以无限......

答案 5 :(得分:2)

当你没有迭代器(通常是计数器)时,while循环通常会更好。

答案 6 :(得分:2)

当您知道要循环的次数时,请使用FOR循环。术语的技术术语是迭代次数。您如何知道迭代次数?您知道开始,停止和执行的步骤。如果您知道这三点信息,则应该使用FOR循环,因为它是完成工作的正确工具。
当您不知道迭代次数时,请使用DO循环。如果您不知道启动,停止,步进或它们的某种组合,则需要使用DO循环。该表达式将在循环顶部求值。 如果要循环至少一次,请使用DO WHILE循环。如果您不想循环至少一次,请仅使用WHILE循环。该表达式将在循环的底部求值。

答案 7 :(得分:1)

我觉得我应该指出的一点是,当你使用for循环时,你不需要将计数器分配给另一个变量。例如,for(counter=0; counter<10; counter++)是有效的Java代码。

至于你的问题,当你想要一段代码运行一定次数时,for循环通常会更好,而当代码保持运行的条件更通用时,while循环更好,例如具有布尔标志,只有在代码块中满足某个条件时才设置为true。

答案 8 :(得分:1)

您可以执行以下操作:

int counter;
for (counter = 0; counter < 10; ) {
    //do some task
    if(some condition){
        break;
    }
}
useTheCounter(counter);

while循环可以执行的任何操作也可以在for循环中完成,而for循环可以执行的任何操作也可以在while循环中完成。

答案 9 :(得分:1)

没有。没有for优于while的具体情况 他们做同样的事情。
这取决于您在应用其中之一时的选择。

答案 10 :(得分:0)

while循环更加灵活,而for循环更具可读性,如果这就是您所要求的。如果您想知道哪一个更快,那么请看一下我对forwhile循环的速度进行的实验。

https://sites.google.com/a/googlesciencefair.com/science-fair-2012-project-96b21c243a17ca64bdad77508f297eca9531a766-1333147438-57/home

while循环更快。

答案 11 :(得分:0)

int counter = 0;
while (counter < 10) {
    //do some task
    if(some condition){
        break;
    }
}
useTheCounter(counter); // method which use that value of counter do some other task

您好我重复您的代码,因为它不正确。你忘记增加你的计数器,使它保持在0

int counter = 0;
while (counter < 10) {
  //do some task
  if(some condition){
      break;
  }
  counter++;
}
useTheCounter(counter); // method which use that value of counter do some other task

答案 12 :(得分:0)

您可以为for循环编写的内容都可以转换为while循环。使用for循环的好处是

  1. 该语法允许您启动计数器,将条件设置为退出循环,然后自动递增。

您也可以在while循环中完成相同的操作。但是,您无法在for循环中执行while循环中可以做的所有事情。例如,如果您有一个以上的计数器,并且您希望它们中的任何一个都根据条件递增,则只能使用。在循环末尾的for循环中,计数器递增自动发生。

最佳用途

对于矩阵或单数组单向遍历,for循环好 如果有多个条件和多个计数器,则while循环会很好。如果你想根据不同的条件从两侧遍历一个数组,那么while循环是好的。

在循环时,有更多的机会忘记递增计数器并最终进入无限循环,而在for循环中,语法将帮助您轻松设置计数器。

答案 13 :(得分:0)

For循环包含计数的概念,这很棒。但是,当您不知道代码应运行多少次时,while循环才有意义。