首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java For Counting中Do While循环与for循环的比较

Java For Counting中Do While循环与for循环的比较
EN

Stack Overflow用户
提问于 2018-10-10 04:36:22
回答 6查看 885关注 0票数 9

当涉及到计数时,应该使用do-while循环还是for循环?因为这是:

class Main {
  public static void main(String[] args) {
    int times = 1;
    do {
      System.out.println("I have printed " + times + " times.");
      times++;
    } while (times < 6);
  }
}

似乎做的事情和下面的完全一样:

class Main {
  public static void main(String[] args) {
    for (int times = 1; times < 6; times++) {
      System.out.println("I have printed " + times + " times.");
    }
  }
}

这是速度上的差异吗?偏好?情况?个人怪癖?某种"Java社交禁忌“?我没有头绪。两者似乎都能用于有效的计数,只是前者需要更多的时间。而且两者打印的是完全相同的。

System.out.println("Many thanks!!");

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2018-10-10 04:42:35

你说得对,它们做的是一样的事情(除了一个从0开始计数,另一个从1开始计数,但这只是一个实现细节)。如果您的程序预先(在循环开始之前)知道您希望循环迭代多少次,大多数Java开发人员会告诉您使用for循环。这就是它设计的目的。

while循环或do while循环更适合于在退出循环之前查找特定值或条件的情况。(类似于count >= 10userInput.equals("N")。计算结果为布尔值True/False的任何值。)

票数 9
EN

Stack Overflow用户

发布于 2018-10-10 04:57:22

当面临这样的困境时,目标是可读性和熟悉性。您不应该关注微优化。专注于可读性和清晰地传达你的意图。在类似的情况下,要像其他人一样去做。

就像@蜥蜴比尔说的那样,while循环向你代码的读者建议你选择它,因为你不是在计数,而是重复直到满足一个条件。至少一次-否则你会选择while(...){ }循环。

换句话说,fordo {} while()while() { }的工作原理是一样的。但在你的特定逻辑中,一个可能更好地传达你的意图。

票数 4
EN

Stack Overflow用户

发布于 2018-10-10 05:01:49

这取决于程序员选择何时使用for循环或do while循环,但大多数程序员遵循的一般实践是

  • For循环

当您知道循环将执行预定义的次数时(因为您也可以使用for(;true;),它将永远循环)。例如,运行10次或n次的循环,其中n是变量

for(int i = 0; i < n; i++) {
    //Do something
}

  • While循环

当您知道循环应该在将特定条件求值为true之后终止,或者您希望循环永远运行时(如while(true)),并检查while循环内部的中断条件。

此外,当您一开始不能确定条件时,while循环是首选的,并且从while(true)开始,但是一旦您在循环中编写了代码,您就可以很好地理解正在发生的事情,并了解要检查哪些条件,从而了解何时退出循环。例如

while(x != 0) {
    //Do something;
    x--;
}
while(true) {
    // some code to execute on which the condition depends
    if(condition is true) {
        break;
    }
}

  • Do while循环

Do while循环类似于while循环,但有一点不同。也就是说,它允许在不检查条件的情况下进行第一次迭代(在while语句中指定,但您仍然可以计算块内的条件(大括号))。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52728945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档