for,while,do while区别
### for 循环 在程序设计中,`for` 循环是一种常用的循环结构,它非常适合于已知迭代次数的情况。通常,`for` 循环由三个部分组成:初始化、条件判断和更新操作。 #### 语法结构 ```plaintext for (初始化; 条件判断; 更新操作) { // 循环体 } ``` #### 举例说明 例如,假设我们需要询问100个人是否愿意给钱,如果不愿意,则对其进行“教育”(在这个上下文中,“教育”代表打一顿,当然,在实际编程中这只是一个比喻)。 ```plaintext for (int i = 1; i <= 100; i++) { System.out.println("问第" + i + "个人给不给钱"); if (!giveMoney()) { System.out.println("不给,打一顿"); } else { System.out.println("给了钱"); } } ``` 这里,`int i = 1` 是初始化部分,`i <= 100` 是条件判断部分,`i++` 是更新操作部分。这段代码的意思是从第1个人开始问,一直到第100个人结束,每问完一个人就将计数器 `i` 增加1。 ### while 循环 `while` 循环是另一种常见的循环结构,它适合于事先不知道循环次数的情况。`while` 循环只有在条件为真时才会执行循环体内的代码。 #### 语法结构 ```plaintext while (条件判断) { // 循环体 } ``` #### 举例说明 假设我们不知道会遇到多少人,只知道需要一直询问,直到有人给钱为止: ```plaintext int count = 1; while (!giveMoney()) { System.out.println("问第" + count + "个人给不给钱"); if (!giveMoney()) { System.out.println("不给,打一顿"); count++; } else { System.out.println("给了钱"); break; // 结束循环 } } ``` 这里的 `!giveMoney()` 是条件判断部分,每次循环前都会检查这个条件。只要条件为真(即没有人给钱),就会继续询问下一个人。一旦有人给钱,通过 `break` 语句跳出循环。 ### do...while 循环 `do...while` 循环与 `while` 循环相似,但有一个重要的区别:`do...while` 循环至少会执行一次循环体,即使条件一开始就不满足。 #### 语法结构 ```plaintext do { // 循环体 } while (条件判断); ``` #### 举例说明 假设我们同样不知道会遇到多少人,但这次我们决定先对第一个人进行“教育”,然后再询问是否给钱: ```plaintext int count = 1; do { System.out.println("先打一顿"); System.out.println("问第" + count + "个人给不给钱"); if (!giveMoney()) { System.out.println("不给,再打一顿"); count++; } else { System.out.println("给了钱"); } } while (!giveMoney()); ``` 这里,无论 `giveMoney()` 的返回值如何,`do...while` 循环的循环体都会至少执行一次。之后,每次循环后都会检查条件,只要条件为真(即没有人给钱),就会继续询问下一个人。 ### 总结 - **for** 循环适用于已知循环次数的情况,能够清晰地控制循环的起始和结束。 - **while** 循环适用于未知循环次数,但在条件为假时结束的情况。 - **do...while** 循环至少执行一次循环体,适用于必须至少执行一次循环的情况。 通过这些例子,我们可以更好地理解三种循环的不同应用场景以及它们各自的优缺点。在实际编程过程中,根据具体的业务逻辑选择合适的循环结构非常重要。