![](http://on91wk3hn.bkt.clouddn.com/17-12-20/92342060.jpg)
之前的文章中给大家介绍了选择结构来控制程序流转,这篇文章内容着重介绍一下另外一种程序流控制,循环结构。
有的时候我们需要在程序中重复的去做某一件事情,比如重复对某个变量进行相同的操作。这个时候我们就可以采用循环结构来帮我们处理。
在 Java 中常用的循环结构主要三种:
1. `for` 循环
2. `while` 循环
3. `do while` 循环
## 1. for 循环
for 循环是经常用到的一种循环结构,它的结构是这样的
```
for (循环变量初始值; 判断循环是否结束的表达式; 更新循环控制变量) {
循环内容
}
```
**`for` 循环处理一个数学计算题:**
`从 1 加到 100 的值是多少?`
```java
int num = 0;
for (int i = 0; i <= 100; i++) {
num += i;
}
System.out.println("num = " + num);
```
1. 执行初始化步骤, `int i = 0`;
2. 判断循环是否结束,`i < = 100` 如果为true,循环体 `num += 1`被执行。如果为false,循环终止
3. 执行一次循环后,更新循环控制变量 `i++`
4. 再次判断循环是否结束,循环执行上面的过程
**注意不要死循环**:
```java
for (;;;) {
System.out.println("这是一个死循环,会一直执行下去");
}
```
**`for`循环来遍历输出数组的值**:
输出颜色数组 `{"red", "yellow", "blue", "green","orange"}`的每个颜色
```java
String[] colors = {"red", "yellow", "blue", "green","orange"};
for (int i = 0; i < colors.length; i++) {
System.out.println(colors[i]);
}
```
**增强的 `for` 循环:**
```java
String[] colors = {"red", "yellow", "blue", "green","orange"};
for (String color : colors) {
System.out.println(color);
}
```
## 2. while 循环
`for` 循环我们可以很轻易的次数,循环次数达到会结束循环。`while` 循环则会一种不断地运行,直到指定的条件不满足位置。
`while` 循环的结构:
```
while (布尔判断表达式) {
循环内容
}
```
**`while` 循环处理数学问题:**
`从 1 加到 100 的值是多少?`
```java
int i = 1;
int sum = 0;
while (i <= 100) {
sum += i;
i++;
}
System.out.println("sum = " + sum);
```
`while` 循环将布尔判断表达式:`i <= 100`的值控制循环是否结束,`i <= 100` 为 `false` 终止循环。
死循环是这样子的:
```java
while (true) {
System.out.println("这是死循环,会一直执行");
}
```
**扩展 `while` 循环应用**
需求:持续从键盘获取输入内容,并打印出来
```java
import java.util.Scanner;
public class WhileDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
String cmd = scanner.next();
System.out.println(cmd);
if ("exit".equals(cmd)) {
break;
}
}
scanner.close();
}
}
```
> break 可以跳出整个循环
## 3. do while 循环
对于`while`语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。 `do while`循环和`while`循环相似,不同的是,`do while`循环至少会执行一次。
do while 循环的结构:
```
do {
循环的内容
} while (布尔表达式)
```
再来解决一下这个数据问题:`从 1 加到 100 的值是多少?`
```java
int i = 0;
int sum = 0;
do {
sum += i;
i++;
} while (i <= 100);
System.out.println("sum = " + sum);
```
## 4. break 的作用
我们已经知道`break` 可以跳出 `switch` 结构,在循环结构中,它可以跳出整个循环。
持续从键盘获取输入内容,并打印出来的实例中已经知道 break 可以跳出 `while`循环,对于 `for` 循环,它也有同样的作用。
```java
String[] colors = {"red", "yellow", "blue", "green","orange"};
for (String color : colors) {
System.out.println(color);
if ("blue".equals(color)) {
break;
}
}
```
## 5. continue 的作用
`continue` 用于循环结构中,可以让程序立刻跳到下一次循环。
输出 1 到 100 之内的奇数:
```java
for (int i = 0; i <= 100; i++) {
if (i % 2 == 0) {
continue;
}
System.out.println(i);
}
```
## 6. return 的作用
- `return`后面跟一个值或者变量,指定一个方法的返回值
- 单独的`return;`语句,后面不跟任何值或者变量,表示退出当前方法
`sum` 函数返回计算结果给调用该方法者
```java
public static void main(String[] args) {
int n = sum(100, 200);
System.out.println(n);
}
public static int sum(int n1, int n2) {
int sum = n1 + n2;
return sum;
}
```
输出 0 到 49 的每个值:
```java
for (int i = 0; i <= 100; i++) {
if (i == 50) {
return;
}
System.out.println(i);
}
```
扣扣交流群:468439140