一般情况下,while循环不仅仅是for循环的改述:
for( starting point; condition; excution code){}
//and while
starting point;
while(condition)
{excution code;
}
如果这似乎是一个愚蠢的问题,我真的很抱歉。但我只是想知道是否有一种情况,它比使用更好。反之亦然。
答案 0 :(得分:2)
所有for循环都可以重写为while循环,反之亦然。不同之处在于程序员的意图:你是否在条件为真时重复? ..或者你是在从什么东西迭代到什么东西?
答案 1 :(得分:1)
不是不是这样。两个循环都有不同的用途。 虽然循环通常在我们有无限数量的迭代时使用,而当我们有更确定的迭代次数时使用 循环。但是你可以将一个转换为另一个(虽然我不建议这样做)
另一个重要方面是在 for 循环中,迭代器的范围设置为for循环内部。
但我只是想知道是否有一个案例,它比使用更好。
我更喜欢或选择for
而不是while
因为它更具可读性(尽管有些人可能认为后者更具可读性。)而且还因为迭代器范围原因。
就相似性而言,循环类似于:
while (condition)
{
statements;
}
类似于
if (condition)
{
do
{
statements;
} while (condition);
}
当你不想使用任何计数器时你也可以使用,你的唯一动机就是完成条件。
答案 2 :(得分:1)
通常,如果你需要一个循环中的变量,直到达到一个条件,你就会使用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的元素的可迭代集合。这是一个非常好的事情,非常直观,并且,它可以防止您通过一个或重新初始化错误。