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 介绍
将一个循环放在另一个循环体内,形成了嵌套循环。
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: 程序控制流程相关推荐
- Java SE 控制流程(今天本君不早朝)
Java的控制流程结构与C和C++的控制流程结构一样,只有很少的例外. 具体参考<<java核心技术 卷一>> 第三章 3.8 控制流程 (p63) 或者自己多写写代码,参考报 ...
- java里程序控制流程_Java语言中的程序流程控制
(1. 流程控制 有三种基本技术可以改变程序的控制流程: A.调用方法 :将导致控制流程离开当前方法,转移到被调用的方法. B.选择 : a. if / else 语句 b. switch语句 ...
- 零基础学JAVA]Java SE基础部分-01. Java发展及JDK配置
1.课程名称:Java发展及JDK配置 本季介绍了JAVA的发展过程,包括JDK的发展历程,path路径的配置和classpath的配置及作用.并简单讲解了一个简单的JAVA程序,并通过此程序讲解了J ...
- Java SE 11:推动Java向前发展
介绍 在我看来,这篇文章提出了Java语言应该如何发展以保持其作为首选语言的地位. 它还提供了一些我喜欢但有时(可能永远不会)成为Java一部分的功能,由于我将要解释的某些原因,这些功能有时我已经爱上 ...
- JDK 7-JDK 21:Oracle Java SE 支持路线图/Oracle Java SE Support Roadmap 持续更新
文章目录 前言 一.Oracle Java SE 产品版本 二.Java SE 8 的公共更新结束 三.参考文档 总结 前言 几十年来,Java 生态系统已经成功地经历了这个过程,经历了十次主要的平台 ...
- Java SE 基础知识(一)
一.基础知识 1. Java SE : Java Standard Edition Java ME : Java Micro Edition Java EE : Java Enterprise Edi ...
- Java学习路线,Java SE,EE,ME的区别,SSM框架基本概念
1.尚硅谷 视频课程:https://www.bilibili.com/read/cv5216534 初学者可按照尚硅谷公开的JAVA视频最快学习路线: JavaSE --> MySQL–> ...
- Java SE到Java EE的学习转换
我接触java的学习是从Java SE开始的,SE部分主要是用来做桌面程序的开发,在现在的主流趋势中已经渐渐的退出了中心舞台.现在人们对网络的认知和通过网络接收信息大部分都是碎片化的,因此各种网页就成 ...
- 用Java SE 6.0实现高质量桌面集成开发 (转)
下载本文源代码 提要:本文将以具体的实例向你展示Java SE 6在桌面开发中所提供的一系列优秀特征. 一. 引言 随着Java SE 6 Beta的发行,Java开发者再也不需要自己去实现Java本 ...
- Java SE 6.0实现高质量桌面集成开发
最新的Java标准版本6.0(代码名为Mustang)将在功能上进行一系列的改进--开发者们能够方便地用Java处理安全,JMX,操作系统文件,国际化和桌面开发等一系列问题.Sun在开发这个版本的过程 ...
最新文章
- 证书格式pfx和cer的区别及转换
- 判断N!中二进制中最低位1的位置
- python读取文件的常用方法
- (六)docker-compose使用教程
- python导入gif_Python之GIF图倒放,沙雕快乐源泉!我已经笑了一天了!
- 【原创】OllyDBG 入门系列(一)-认识OllyDBG
- Linux 入门笔记
- python hdf5 —— h5py
- bzoj 1050: [HAOI2006]旅行comf(尺取+最短路)
- [转载]Java多线程——创建线程池的几个核心构造参数
- Atitit. 提升存储过程与编程语言的可读性解决方案v3 qc25.docx
- 基于JavaWeb的高校试题库管理系统设计与实现 毕业论文+项目源码及数据库文件、
- 优思学院|朱兰,质量改进的先驱者
- JavaScript点击背景图片切换
- GetStyle,ModifyStyle,GetExStyle,ModifyStyleEx
- 设置电脑 保护视力 还有桌面默认颜色
- 先人一步(小高读书笔记第一季)
- 故障排除经验——笔记本电脑重启后键盘失灵的解决办法(亲测可用)
- js练习:筋斗云案例练习
- CRACK:CAD Exchanger SDK 3.15.0/MAC/WIN/LINUX/Android
热门文章
- 2020年8月Android手机性能榜,8月Android手机好评榜:性能并非绝对竞争力
- 响应式html5灯具灯饰英文外贸类织梦模板(自适应)
- B. Lunatic Never Content
- iOS_获取手机摇晃事件
- Error response from daemon: Cannot restart container XXX: driver failed programming external conn
- 遗传算法的Python实现(求解函数极值问题)
- 【深度学习】BERT变体—RoBERTa
- python 毕设保存图片格式 的坑【记录】
- openpyxl操作Excel文件
- SAP License:浅谈财务信息系统建设