食用前说明:

本文章内容来自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

Java SE: 程序控制流程相关推荐

  1. Java SE 控制流程(今天本君不早朝)

    Java的控制流程结构与C和C++的控制流程结构一样,只有很少的例外. 具体参考<<java核心技术 卷一>> 第三章 3.8 控制流程 (p63) 或者自己多写写代码,参考报 ...

  2. java里程序控制流程_Java语言中的程序流程控制

    (1. 流程控制 有三种基本技术可以改变程序的控制流程: A.调用方法 :将导致控制流程离开当前方法,转移到被调用的方法. B.选择  :   a. if / else 语句 b. switch语句 ...

  3. 零基础学JAVA]Java SE基础部分-01. Java发展及JDK配置

    1.课程名称:Java发展及JDK配置 本季介绍了JAVA的发展过程,包括JDK的发展历程,path路径的配置和classpath的配置及作用.并简单讲解了一个简单的JAVA程序,并通过此程序讲解了J ...

  4. Java SE 11:推动Java向前发展

    介绍 在我看来,这篇文章提出了Java语言应该如何发展以保持其作为首选语言的地位. 它还提供了一些我喜欢但有时(可能永远不会)成为Java一部分的功能,由于我将要解释的某些原因,这些功能有时我已经爱上 ...

  5. JDK 7-JDK 21:Oracle Java SE 支持路线图/Oracle Java SE Support Roadmap 持续更新

    文章目录 前言 一.Oracle Java SE 产品版本 二.Java SE 8 的公共更新结束 三.参考文档 总结 前言 几十年来,Java 生态系统已经成功地经历了这个过程,经历了十次主要的平台 ...

  6. Java SE 基础知识(一)

    一.基础知识 1. Java SE : Java Standard Edition Java ME : Java Micro Edition Java EE : Java Enterprise Edi ...

  7. Java学习路线,Java SE,EE,ME的区别,SSM框架基本概念

    1.尚硅谷 视频课程:https://www.bilibili.com/read/cv5216534 初学者可按照尚硅谷公开的JAVA视频最快学习路线: JavaSE --> MySQL–> ...

  8. Java SE到Java EE的学习转换

    我接触java的学习是从Java SE开始的,SE部分主要是用来做桌面程序的开发,在现在的主流趋势中已经渐渐的退出了中心舞台.现在人们对网络的认知和通过网络接收信息大部分都是碎片化的,因此各种网页就成 ...

  9. 用Java SE 6.0实现高质量桌面集成开发 (转)

    下载本文源代码 提要:本文将以具体的实例向你展示Java SE 6在桌面开发中所提供的一系列优秀特征. 一. 引言 随着Java SE 6 Beta的发行,Java开发者再也不需要自己去实现Java本 ...

  10. Java SE 6.0实现高质量桌面集成开发

    最新的Java标准版本6.0(代码名为Mustang)将在功能上进行一系列的改进--开发者们能够方便地用Java处理安全,JMX,操作系统文件,国际化和桌面开发等一系列问题.Sun在开发这个版本的过程 ...

最新文章

  1. 证书格式pfx和cer的区别及转换
  2. 判断N!中二进制中最低位1的位置
  3. python读取文件的常用方法
  4. (六)docker-compose使用教程
  5. python导入gif_Python之GIF图倒放,沙雕快乐源泉!我已经笑了一天了!
  6. 【原创】OllyDBG 入门系列(一)-认识OllyDBG
  7. Linux 入门笔记
  8. python hdf5 —— h5py
  9. bzoj 1050: [HAOI2006]旅行comf(尺取+最短路)
  10. [转载]Java多线程——创建线程池的几个核心构造参数
  11. Atitit. 提升存储过程与编程语言的可读性解决方案v3 qc25.docx
  12. 基于JavaWeb的高校试题库管理系统设计与实现 毕业论文+项目源码及数据库文件、
  13. 优思学院|朱兰,质量改进的先驱者
  14. JavaScript点击背景图片切换
  15. GetStyle,ModifyStyle,GetExStyle,ModifyStyleEx
  16. 设置电脑 保护视力 还有桌面默认颜色
  17. 先人一步(小高读书笔记第一季)
  18. 故障排除经验——笔记本电脑重启后键盘失灵的解决办法(亲测可用)
  19. js练习:筋斗云案例练习
  20. CRACK:CAD Exchanger SDK 3.15.0/MAC/WIN/LINUX/Android

热门文章

  1. 2020年8月Android手机性能榜,8月Android手机好评榜:性能并非绝对竞争力
  2. 响应式html5灯具灯饰英文外贸类织梦模板(自适应)
  3. B. Lunatic Never Content
  4. iOS_获取手机摇晃事件
  5. Error response from daemon: Cannot restart container XXX: driver failed programming external conn
  6. 遗传算法的Python实现(求解函数极值问题)
  7. 【深度学习】BERT变体—RoBERTa
  8. python 毕设保存图片格式 的坑【记录】
  9. openpyxl操作Excel文件
  10. SAP License:浅谈财务信息系统建设