[Java复习](四)流程控制

155 阅读2分钟

1. 顺序结构

顺序结构是java中的基本结构。即按照语句从上至下的顺序一句一句执行。它是任何一个程序都离不开的一种基本结构。

image-20210828125038555.png

2. 分支结构

2.1 if单条件单分支

当条件成立时执行{}内的复合语句,不成立时跳过{}内语句。

 if(布尔值或布尔表达式){
     // 布尔值或布尔表达式为true时执行的语句
 }

image-20210318192544626.png

2.2 if-else单条件双分支

当条件成立时执行{}内的复合语句,不成立时执行else{}内的复合语句。

 if(布尔值或布尔表达式){
     // 布尔值或布尔表达式为true时执行的语句
 }
 else{
     // 当布尔值或布尔表达式为false

image-20210318192600096.png

2.3 if-else if多条件多分支

相当于单条件单分支的叠加。

 if(布尔值或布尔表达式){
     // 布尔值或布尔表达式为true时执行的语句
 }else if(布尔值或布尔表达式){
     // 布尔值或布尔表达式为true时执行的语句
 }
 ……

image-20210318192612460.png

  • 此外,if-else语句还可以嵌套使用。

2.4 switch-case开关语句

  • 多选择结构
  • 通过判断参数与选项中的值是否匹配,来进行流程控制。
  • 参数类型可以是byte、short、int、char、String,但不能是布尔类型。
  • 需要注意的是,每个case后都要加上break语句,不然会陷入一个陷阱。

3. 循环结构

3.1 while循环

 while(expression){
     statement;
 }

当expression的值为true时会循环执行statement语句,直到expression的值变为false。

3.2 do-while循环

 do{
     statement;
 }while(expression);

do-while循环不同于while循环的地方是先执行语句,后进行expression值的判断,即do-while循环至少会执行一次。

4. 循环结构

4.1 for循环

 // 打印九九乘法表
 public class Demo01 {
     public static void main(String[] args){
         int row;
         int col;
         for( row=1;row<=9;row++){
             for (col = 1;col<=row;col++){
                 System.out.print(row+"x"+col+"="+row*col+"\t");
             }
             System.out.println("");
         } 
     }
 }
 ​
 // 输出为:
 1x1=1   
 2x1=2   2x2=4   
 3x1=3   3x2=6   3x3=9   
 4x1=4   4x2=8   4x3=12  4x4=16  
 5x1=5   5x2=10  5x3=15  5x4=20  5x5=25  
 6x1=6   6x2=12  6x3=18  6x4=24  6x5=30  6x6=36  
 7x1=7   7x2=14  7x3=21  7x4=28  7x5=35  7x6=42  7x7=49  
 8x1=8   8x2=16  8x3=24  8x4=32  8x5=40  8x6=48  8x7=56  8x8=64  
 9x1=9   9x2=18  9x3=27  9x4=36  9x5=45  9x6=54  9x7=63  9x8=72  9x9=81

4.2 foreach循环

 public class demo2 {
     public static void main(String[] args) {
         int numbers[]  = {1,2,3,4,5,6,7,8,9,10};
         for(int x:numbers){  // 这里的x只是一个临时变量
             System.out.println(x);
         }
     }
 }
 ​
 //输出为:
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10

5 小练习

打印实心、空心三角形:

 package src;
 public class Starts {
 ​
     /**
      *实心金字塔
      */
     public static void solidStrarts(int n){
         for(int i=1;i<n;i++){
             for(int j=n;j>=i;j--){
                 System.out.print(" ");
             }
 ​
             for(int j = 1;j<=i;j++){
                 System.out.print("*");
             }
             for (int j =1;j<i;j++){
                 System.out.print("*");
             }
 ​
             System.out.println("");
         }
     }
 ​
     /**
      * 空心金字塔
      */
     public static void emptyStarts(int n){
         // 循环5次 打印5行
         for(int i=1;i<=n;i++){
             // 打印起始空格
             for(int j=n;j>i;j--){
                 System.out.print(" ");
             }
             // 打印左边三角形的边
             System.out.print("*");
             
 ​
         // 打印中间空白三角形
         if(i!=n){
             for(int j=1;j<=i-1;j++){ 
                 System.out.print(" ");
             }
         }
         if(i!=n){
             for(int j=1;j<=i-1;j++){ 
                 System.out.print(" ");
             }
         }
 ​
             // 打印右边三角形的边
            if(i!=1){
             System.out.print("*");
            }
 ​
            // 打印底部三角形的边
            if(i==n){
             for(int j=0;j<i*2-2;j++){
                 System.out.print("*");
             } 
            }
 ​
         // 换行
         System.out.println("");
             
         }
     }
 ​
 ​
 ​
     public static void main(String[] args) {
         solidStrarts(5);
         System.out.println(" ");
         emptyStarts(5);
     }
 }
 ​
      *
     ***
    *****
   *******
 ​
     *
    *  *
   *    *
  *      *
 **********