Java SE: 程序控制流程

食用前说明:

本文章内容来自B站韩顺平老师的课堂笔记,本人只是将其进行自我整理,内容有所删减,韩顺平老师的B站课程AV号:BV1fh411y7R8

本文章内容来自韩顺平老师的课堂笔记的第5章程序控制流程,重点掌握:for循环、while和do...while的区别、多重循环控制。多重循环控制需要上手练,建议听韩顺平老师的分析讲解,请假练习

链接直到:

从多重循环开始,对练几题

5.1 程序流程控制介绍

  • 意思是:程序运行时如何执行的顺序

  • 主要分类

    • 顺序控制

    • 分支控制

    • 循环控制

5.2 顺序控制

  • 顺序控制通俗易懂,没什么过多介绍的如下图:

     

5.3 分支控制 if-else

5.3.1 分支控制 if-else 介绍

  • 让程序进行判断后执行

  • 分支控制有三种

    • 单分支 if

    • 双分支 if-else

    • 多分支 if-else if -....-else

5.3.2 3 单分支

  • 基本语法

    if ( 条件表达式 ){ 
        执行代码块;
    }

    执行代码可以有多条语句,若只有一条可以省略 {}

  • 案例演示

    int age = 20;
     if (age > 18){
         String s = "大于18岁";
         System.out.println(s);
     }
     ​
     //运行结果
     大于18岁
  • 流程演示图

5.4 双分支

  • 基本语法

    if ( 条件表达式 ){   
     ​
         执行代码块1;
     ​
     } else { 
     ​
         执行代码块2;
     ​
     }

    条件达成,执行1部分,否则执行2部分

  • 案例演示

    int age = 17;
     if (age > 18){
         String s = "大于18岁";
         System.out.println(s);
     } else {
         String s = "小于18岁";
         System.out.println(s);
     }
     ​
     //运行结果
     小于18岁
  • 流程演示图

5.4.1 多分支流程图

 

说明: 1、当条件表达式1成立时,即执行代码块1 2、如果表达式1不成立,才去判断表达式2是否成立 3、如果表达式2成立,就执行代码块2 4、以此类推,如果所有的表达式都不成立 5、则执行 else 的代码块,注意,只能有一个执行入口

  • 案例演示

//导入Scanner包
import java.util.Scanner;
/*
    输入保国同志的芝麻信用分:
    如果:
    信用分为 100 分时,输出 信用极好;
    信用分为(80,99]时,输出 信用优秀;
    信用分为[60,80]时,输出 信用一般;
    其它情况 ,输出 信用 不及格
    请从键盘输入保国的芝麻信用分,并加以判断
    假定信用分数为 int
*/
public class If03 {
    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);
        //接收用户输入
        System.out.println("请输入信用分(1-100):");
        int grade = myScanner.nextInt();
        //先对输入的信用分,进行一个范围的有效判断 1-100, 否则提示输入错误
        if(grade >=1 && grade <= 100) {
            //因为有 4 种情况,所以使用多分支
            if(grade == 100) {
            	System.out.println("信用极好");
            } else if (grade > 80 && grade <= 99) { //信用分为(80,99]时,输出 信用优秀;
            	System.out.println("信用优秀");
            } else if (grade >= 60 && grade <= 80) {//信用分为[60,80]时,输出 信用一般
            	System.out.println("信用一般");
            } else {//其它情况 ,输出 信用 不及格
            	System.out.println("信用不及格");
            }
        } else {
        	System.out.println("信用分需要在 1-100,请重新输入:)");
        }
    }
}

5.5 嵌套分支

5.5.1 基本介绍

  • 在一个分支结构中又完整的嵌套了另一个完整的分支结构,不超过2层

5.5.2 基本语法

  • if (){ 
    	if(){ 
    		//if-else.
    	} else{
    		//if-else
    	}
    }
  • 案例演示
  • //导入Scanner包
    import java.util.Scanner;
    /*
        参加歌手比赛,如果初赛成绩大于 8.0 进入决赛,
        否则提示淘汰。并且根据性别提示进入男子组或女子组。
        提示: double score; char gender;
        接收字符: char gender = scanner.next().charAt(0)
    */
    public class NestedIf {
        public static void main(String[] args) {
            //思路分析
            //1. 创建 Scanner 对象,接收用户输入
            //2. 接收 成绩保存到 double score
            //3. 使用 if-else 判断 如果初赛成绩大于 8.0 进入决赛,否则提示淘汰
            //4. 如果进入到 决赛,再接收 char gender, 使用 if-else 输出信息
            //代码实现 => 思路 --> java 代码
            Scanner myScanner = new Scanner(System.in);
            System.out.println("请输入该歌手的成绩");
            double score = myScanner.nextDouble();
            if( score > 8.0 ) {
            	System.out.println("请输入性别");
            	char gender = myScanner.next().charAt(0);
                if( gender == '男' ) {
                	System.out.println("进入男子组");
                } else if(gender == '女') {
                	System.out.println("进入女子组");
            } else {
            	System.out.println("你的性别有误,不能参加决赛~");
            }
            } else {
            	System.out.println("sorry ,你被淘汰了~");
            }
        }
    }

5.6 switch 分支结构

5.6.1 基本语法

  • switch (表达式){ 
    	case 常量1 :
     	//语句
    	break; //可选 
    case 常量2 : 
    	//语句 
    	break; //可选 
    //你可以有任意数量的case语句 
    default : //可选 
    	//语句
    }

switch case 执行时,一定会先进行匹配,匹配成功返回当前 case 的值,再根据是否有 break,判断是否继续输出,或是跳出判断。

  • 案例演示

public class Test {
   public static void main(String args[]){
      //char grade = args[0].charAt(0);
      char grade = 'C';
 
      switch(grade)
      {
         case 'A' :
            System.out.println("优秀"); 
            break;
         case 'B' :
         case 'C' :
            System.out.println("良好");
            break;
         case 'D' :
            System.out.println("及格");
            break;
         case 'F' :
            System.out.println("你需要再努力努力");
            break;
         default :
            System.out.println("未知等级");
      }
      System.out.println("你的等级是 " + grade);
   }
}
  • 运行结果
良好
你的等级是 C

5.6.4 switch 注意事项和细节

1、表达式数据类型,应和case后的常量类型一致,或者是可以自动转成可以相互比较的类型,比如输入的是字符,而常量是 int

2、switch(表达式)中表达式的返回值必须是:(byte,short,int,char,enum[枚举],String)

  • 案例演示

    doubLe c = 1.1;
     switch(c){//错误
         case 1.1 : //错误
         System.out.println("ok3");
         break;
     }

3、case子句中的值必须是常量,而不能是变量

4、default子句是可选的,当没有匹配的case时,执行default

5、break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾,即:注意break穿透

5.6.5 switch 和 if 的比较

  • 1、如果判断的具体数值不多,而且符合 byte、 short 、int、 char, enum[枚举], String 这 6 种类型。虽然两个语句都可 以使用,建议使用 swtich 语句。

  • 2、其他情况:对区间判断,对结果为 boolean 类型判断,使用 if,if 的使用范围更广

5.7 for 循环控制

5.7.1 基本语法

1、for 有四要素: (1)循环变量初始化(2)循环条件(3)循环操作(4)循环变量迭代

2、循环操作 , 这里可以有多条语句,也就是我们要循环执行的代码

5.7.2 案例演示

public static void main(String[] args) {
    int n = 9;
    for( int i = 0; i <= n; i++) {
    	System.out.println(i + "+" + (n-i) + "=" + n);
    }
}
  • 运行结果
0+9=9
1+8=9
2+7=9
3+6=9
4+5=9
5+4=9
6+3=9
7+2=9
8+1=9
9+0=9

5.7.3 for 无限循环

结合 break 一起使用

for (;;){ //表示个无限循环,死循环 + break一起使用
     System.out.println("永动机");
 }

5.8 while 循环控制

5.8.1基本语法

  • while (循环条件){
    	循环体(语句);
    	循环变量迭代;
    }
  • 案例演示

    public static void main(String[] args) {
         int i = 1; //循环变量初始化
         while( i <= 10 ) {//循环条件
             System.out.println(" 循环 " + i + " 次");//执行语句
             i++;//循环变量迭代
         }
         System.out.println("退出 while ,继续.." + i); // 11
     }
  • 运行结果

      循环 1 次
      循环 2 次
      循环 3 次
      循环 4 次
      循环 5 次
      循环 6 次
      循环 7 次
      循环 8 次
      循环 9 次
      循环 10 次
     退出while ,继续..11

5.8.2 while 无限循环

结合 break 一起使用

while (true){
    System.out.println("永动机");
}

5.9 do...while 循环控制

5.9.1基本语法

  • 循环变量初始化;

     do { 
         循环体(语句); 
         循环变量迭代; 
     } while (循环条件);
  • 案例演示

     public class Test { 
         public static void main(String[] args){ 
             int x = 1; 
             do{ 
                 System.out.print(" 循环 " + x + " 次"); 
                 x++; 
             }while( x < 10 ); 
         } 
     }
  • 运行结果

      循环 1 次
      循环 2 次
      循环 3 次
      循环 4 次
      循环 5 次
      循环 6 次
      循环 7 次
      循环 8 次
      循环 9 次

5.9.2 注意事项和细节

  • do..while 循环是先执行,再判断, 因此它至少执行一次

  • 结尾有一个 分号 ;

5.9.3 do...while 无限循环

结合 break 一起使用

 do{
     System.out.println("永动机");
 } while (true);

5.9.4 while 和 do...while 的比较

  • 只有需要至少执行一次时,则采用 do...while

5.10 多重循环控制

5.10.1 介绍

  1. 将一个循环放在另一个循环体内,形成了嵌套循环。

    for ,while ,do…while 均可以作为外层循环和内层循环。

    嵌套层数做多为:1 ~ 2 层

5.11 跳转控制语句-break

5.11.1 基本介绍

  • break 语句用于终止某个语句块的执行,可用在switch 或者循环 [ for , while , do-while ] 中

5.11.2 以 while 使用 break 为例,示意图

5.11.3 案例演示

public static void main(String[] args) {
    int [] numbers = {10, 20, 30, 40, 50};

    for(int x : numbers ) {
        // x 等于 30 时跳出循环
        if( x == 30 ) {
            break;
        }
        System.out.print( x );
        System.out.print("\n");
    }
}
  • 运行结果
10
20

5.12 跳转控制语句-continue

5.12.1 基本介绍:

  • continue 语句用于结束本次循环,继续执行下一次循环

5.12.2 以 while 使用 continue 为例,示意图

5.11.3 案例演示

public static void main(String[] args) {
      int [] numbers = {10, 20, 30, 40, 50};
 
      for(int x : numbers ) {
         if( x == 30 ) {
        continue;
         }
         System.out.print( x );
         System.out.print("\n");
      }
   }
  • 运行结果
10
20
40
50
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值