明天也有晚霞嘛 发表于 2021-3-17 00:08

Day08——循环结构

# Day08——循环结构

顺序结构的程序语句只能被执行一次。如果想要同样的操作执行多次,,就需要使用循环结构。

Java中的三种主要循环结构:

- while循环
- do...while循环
- for循环

> 在Java5中引入了一种主要用于 数组 的**增强型for循环**。

## while循环

while是最基本的循环。while语句格式:

```java
while( 布尔表达式 ){
    //循环内容
}
```

当布尔表达式为true时,while内的循环内容会被执行,直到布尔表达式判断为false停止。

少部分情况需要循环一直执行,比如服务器的请求响应监听等。

循环条件一直为true就会造成无限循环【死循环】,我们正常的业务编程中应该尽量避免死循环。死循环会影响程序性能或者造成程序卡死奔溃!

例1:求1+2+3+ ... +100= ?

```java
public static void main(String[] args){
    int i = 0;
    int sum = 0
      while(i<100){
            i++;
            sum = sum + i;
      }
    System.out.println("Sum = " + sum );
}//Sum = 5050
```

## do...while循环

do...while语句格式:

```java
do{
    //循环内容
}while(布尔表达式);
```

当布尔表达式为false时,while语句不会执行循环内容,但do...while语句会执行一次循环内容,即先执行一次,后判断布尔表达式。

例2:

```java
//例1代码段4~7改为如下
do{
        i++;
        sum = sum + i;
}while(i<100);   //5050
```

## for循环

for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。

for循环格式:

```java
for(初始化; 布尔表达式 ; 迭代){
    //循环内容
}
```

**【扩展】缩写:100.for = for (int i = 0; i < 100; i++) {}**

例3:

```java
for (int i = 0; i <= 100; i++) {
    sum = sum + i;
}
```

上端代码可以看出,for循环把while和do...while中,i 的初始化、i 迭代的语句放在了一起,因此能使循环结构变得更加简单。

例4:输出1-1000之间能被5整除的数,并且每行输出3个。

```java
int j = 0;
for (int i = 0; i <= 1000; i++) {
        if(i%5==0){
                j++;//判断输出了几个数
                if(j%3==0){
                        System.out.println(i);//println打印出i并且换行
                }else{
                        System.out.print(i+"\t");//print不换行,\t为转义字符tab,用于分隔两相邻数据
                }
        }
}
```

例5:打印九九乘法表

```java
for (int i = 1; i <= 9; i++) {
        for (int j = 1; j <= i; j++) {
                System.out.print(i+"*"+j+"="+i*j+"\t");
        }
        System.out.println();
}
/*
1*1=1       
2*1=2        2*2=4       
3*1=3        3*2=6        3*3=9       
4*1=4        4*2=8        4*3=12        4*4=16       
5*1=5        5*2=10        5*3=15        5*4=20        5*5=25       
6*1=6        6*2=12        6*3=18        6*4=24        6*5=30        6*6=36       
7*1=7        7*2=14        7*3=21        7*4=28        7*5=35        7*6=42        7*7=49       
8*1=8        8*2=16        8*3=24        8*4=32        8*5=40        8*6=48        8*7=56        8*8=64       
9*1=9        9*2=18        9*3=27        9*4=36        9*5=45        9*6=54        9*7=63        9*8=72        9*9=81       
*/
```

- 增强for循环

Java5 引入了一种主要用于**数组 或 集合**的增强型 for 循环。

```java
int[] numbers={10,20,30,40,50};//创建一个数组numbers,并赋值
        for(int x:numbers){      //遍历数组中的元素,赋值给x
                System.out.println(x);
}//10        20       30           40        50
```

>详情见数组章节。

## break & continue

### 1、break关键字

break 主要用在循环语句或者 switch 语句中,用来跳出整个**语句块**。

在双循环嵌套语句中,跳出里层循环。

### 2、continue关键字

continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代,即,结束本次循环,并进行下一次判断布尔表达式循环。

**break & continue两者区别:**

- break用于强行退出循环,不执行循环中剩余的语句。
- continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行 下一次是否执行循环的判定。



【扩展】打印三角形

```java
public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {//i控制行数,i=1即第一行
                for (int j = (9-(2*i-1))/2 ; j >= 0 ; j--) {
                        System.out.print(" ");//j控制空格数,即此行需要多少个空格
                }
                for (int k=2*i-1; k > 0 ; k--) {
                        System.out.print("*");//k控制*数,即此行需要多少个*
                }
                System.out.println();       //换行
        }
}/*
   *
    ***
   *****
*******
*********
*/
```

zd404039009 发表于 2021-3-17 08:36

;www循环打印99乘法表- -想起当初的练习了

lysps 发表于 2021-3-17 07:49

就早前看过几节c、python的视频,好像有讲。
但现在是不记得这循环的区别了。

看文本果然也难懂一点...

贫道不是频道 发表于 2021-3-17 00:22

感谢分享,可是不懂Java{:301_977:}

昧昩 发表于 2021-3-17 00:32

感谢分享,学习到了

95461248 发表于 2021-3-17 00:36

感谢分享,重温许久没接触的东西。

opqrsgu 发表于 2021-3-17 05:31

不明觉厉!不管了,看着很腻害就赞!{:17_1068:}

erui 发表于 2021-3-17 06:27

谢谢楼主分享,学学java编程

sxwa059587 发表于 2021-3-17 08:40

- -想起当初的练习了

sunnyAlvis 发表于 2021-3-17 10:12

感谢分享,正好在学单片机
页: [1] 2
查看完整版本: Day08——循环结构