概述
食用前说明:
本文章内容来自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: 程序控制流程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复