在逻辑中何时使用For循环和何时使用while循环

时间:2013-07-09 05:11:52

标签: java

我是编程语言的初学者,我在循环概念的基础上有点困惑任何人都可以告诉我何时使用For循环的概念以及何时使用while循环以便它会非常优雅对我未来的编程充满乐趣, 提前致谢

6 个答案:

答案 0 :(得分:6)

一般来说,如果你知道(或者程序在循环时可以知道)你想要运行一段代码的次数,你可以使用for循环,如果你不知道,你可以使用while循环。

然而,可以互换地使用它们,所以虽然使用它们可能不那么优雅,但它并不重要。 例如:

for(int i = 0; i < 100; i++){
    do stuff
}

相同
int i = 0;
while(i < 100){
    do stuff
    i++;
}

,但前者看起来更优雅。

同样,

bool condition = false;
while(condition){
    do stuff
}

for(bool condition = false; condition;){
    do stuff
}

是相同的,但一般来说,while循环在这里被认为更优雅。

答案 1 :(得分:3)

在几乎所有情况下,您都可以使用for或while循环。为您提供了两种循环方式,以帮助降低代码在不同用例中的复杂性。

何时使用for循环

对于循环最好是在开始之前知道要循环的迭代次数。例如,如果您知道要打印数字1到10,以便知道要循环10次。

for(int i = 1; i <= 10; i++)
{
   System.out.println(i);
}

何时使用while循环

当您希望继续循环直到发生特定事件或满足条件时,循环最佳。例如,假设您想打印1到10之间的随机数,直到遇到数字5.这可能需要一次迭代或数百次,具体取决于您的运气。

Random rand = new Random();
int value = 0;
while(value != 5)
{
   value = rand.nextInt(10);
   System.out.println(value);
}

答案 2 :(得分:1)

当你知道loop需要多少次时,会使用For循环。 While循环用于循环直到事件发生。

另外,请注意,无论你使用for循环做什么,你都可以使用while循环(只需添加一个在while循环中递增的变量,并在循环时将其用于break。变量达到一定值)。

答案 3 :(得分:1)

如果你知道这个循环必须做的迭代次数,你基本上应该使用for循环。即使该数字是一个变量(如列表的长度),它也是在运行时知道的。

当您不知道迭代次数时,使用while循环。您经常检查任何数字后可以评估为false的条件。

您还可以使用do-while和for-each循环。当您知道自己至少有一次迭代但未知数量时,会使用do-while。 for-each用于迭代数组和集合。它可以为包含的每个元素做一些事情。

答案 4 :(得分:1)

for循环可让您选择执行以下三项内容中的任何一项或全部:

  • 实例化起始迭代值(int i = 0)
  • 定义可以继续迭代的布尔条件(i <10)
  • 提供增量步骤(i + = 2)

有效的for循环可能如下所示:

for(; ;) {
    System.out.println("This will run forever!!!");
}

while循环只为您提供布尔条件,强制

您通常在以下时间使用for循环:

  • 您知道必须迭代的元素的大小

您通常在以下时间使用while循环:

  • 您不知道必须迭代的元素的大小
  • 您想忙于等待一些价值或变量

答案 5 :(得分:0)

这是人们通常通过经验获得的事情之一。首先要意识到的是,任何for循环都可以分解为while循环

for ( initialise; test ; go on to next )

可以表示为

initialise;
while(test) {
    go on to next
}

我建议尝试一会儿只使用while循环。你会发现你的一些while循环开始感觉有点笨拙。

initialise;
while(test) {
    my really interesting code here
    go on to next
}

你找到了

for ( initialise ; test; go on to next ) {
     my really interesting code here
}

读得更清楚。一个常见的例子是通过数组工作。

for ( int i; i < array.length; i++ ){
       something with array[i];
}