来源:Day03流程控制语句
目录:JavaStudy03 流程控制语句
今日内容
- if else判断语句
- switch选择语句
- for循环语句
- while循环语句
- do while循环语句
- 跳出语句break,continue
教学目标
- 1理解if语句的格式和执行流程
- 2理解if…else语句的格式和执行流程
- 3理解if…else if语句的格式和执行流程
- 4了解if语句和三元运算符互换
- 5理解switch选择语句的格式和执行流程
- 6了解switch选择语句接收的数据类型
- 7了解case的穿透性
- 8理解while语句的格式和执行流程
- 9理解for语句的格式和执行流程
- 10理解do…while语句的格式和执行流程
- 11了解do…while循环的特点
- 12了解跳出语句break,continue的意义
- 13理解嵌套for循环的执行流程
学习自测
成绩:92%
第一章 流程控制
1.1概述
why:程序执行顺序影响运行结果,所有要控制流程即顺序。
1.2顺序结构
从上到下,如图
实例01:Demo01Sequence
public class Demo01Sequence{
public static void main(String[] args){
//根据编写顺序,从上到下运行
System.out.println("今天是个好天气");
System.out.println("风和日丽!");
System.out.println("编程愉快!");
}
}
运行结果
第二章 判断语句
2.1判断语句1——if
格式:
if(关系表达式){
语句体;
}
流程:
ture执行语句体,false不执行,逻辑如图。
实例02:Demo02If
public class Demo02If{
public static void main(String[] args){
System.out.println("开始");
//定义变量
int i=1;
//变量使用if判断
if(i>2){
System.out.println("继续");
}
System.out.println("结束");
}
}
运行结果
2.2判断语句2——if…else
格式:
if(关系表达式){
语句体1;
}else{
语句体2;
}
流程:
true执行1,false执行2,逻辑如图。
实例03:Demo03IfElse
public class Demo03IfElse{
public static void main(String[] args){
int i=3;
if(i>5){
System.out.println("size");
}else{
System.out.println("color");
}
}
}
运行结果:
2.3判断语句3——if…else if…else
格式:
if(判断条件1){
执行语句1;
}else if(判断条件2){
执行语句2
}
else if(判断条件n){
执行语句n;
}else{
执行语句n+1;
}
流程:
true执行1,false判断2,true执行2,false继续判断,全false执行n+1。逻辑如图。
实例04:Demo04IfElseifElse
public class Demo04IfElseifElse{
public static void main(String[] args){
int i=5;
if(i<4){
System.out.println("1");
}else if(i<3){
System.out.println("2");
}else if(i<2){
System.out.println("3");
}else{
System.out.println("4");
}
}
}
运行结果:
偷懒例子太简单,刻意练习其他比较关系式,再来一个
实例05:Demo05IfElseifElse
public class Demo05IfElseifElse{
public static void main(String[] args){
//定义两个变量ab,判断a值,输出函数b(a)
//b(a)关系如下:
//a>=3,b=2*a;
//a<=2&&a>=3,b=2*a+1;
//a!=1||a>=2,b=2*a-1;
int a=1;
int b;
if(a>=3){
b=2*a;
}else if(a<=2&&a>=3){
b=2*a+1;
}else if(a!=1||a>=2){
b=2*a-1;
}else{
b=3*a;
}
System.out.println(b);
}
}
运行结果:
2.4语句练习
题目:指定考试成绩,判断学生等级
实测:
public class Test01{
public static void main(String[] args){
//定义一个变量i
//使用if...else if...else语句
//判断i输出相应等级
int i=59;
if(i>=90&&i<=100){
System.out.println("优秀");
}else if(i>=80&&i<=89){
System.out.println("好");
}else if(i>=70&&i<=79)(
System.out.println("良好");
)else if(i>=60&&i<=69){
System.out.println("及格");
}else{
System.out.println("不及格");
}
}
}
运行结果
1、未考虑输入错误的情况
2、有意义的变量用英文表示
3、输出完整句子
4、利好暗示100
更正后
public class Test02{
public static void main(String[] args){
int score=100;
if(score<0||score>100){
System.out.println("你的成绩是错误的");
}else if(score>=90&&score<=100){
System.out.println("你的成绩属于优秀");
}else if(score>=80&&score<=89){
System.out.println("你的成绩属于好");
}else if(score>=70&&score<=79){
System.out.println("你的成绩属于良好");
}else if(score>=60&&score<=69){
System.out.println("你的成绩属于合格");
}else{
System.out.println("你的成绩属于不合格");
}
}
}
运行结果如下
2.5if语句和三元运算符的互换
即:if(){}else{}等于 ()?{}:{}
实例:Demo08
public class Demo08{
public static void main(String[] args){
int a=10;
int b=20;
//定义变量c,保存a和b的较大值
int c;
if(a>b){
c=a;
}else{
c=b;
}
System.out.println(c);
}
}
等于
public class Demo09{
public static void main(String[] args){
int a=10;
int b=20;
int c;
c=a>b?a:b;
System.out.println(c);
}
}
运行结果如图:
第三章 选择语句
3.1选择语句-- switch
格式
swtich(表达式){
case 常量值1;
语句体1;
break;
case 常量值2;
语句体2;
break;
...
default:
语句体n+1;
break;
}
表达式数据类型为byte、short、int、char、String(JDK7后可用)、enum(枚举)
执行流程
先计算出表达式的值,匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止。如图所示。
实例
public class Demo10Switch{
public static void main(String[] args){
//定义变量,判断星期几
int weekend=7;
switch(weekend){
case 1:
System.out.println("今天是星期一");
break;
case 2:
System.out.println("今天是星期二");
break;
case 3:
System.out.println("今天是星期三");
break;
case 4:
System.out.println("今天是星期四");
break;
case 5:
System.out.println("今天是星期五");
break;
case 6:
System.out.println("今天是星期六");
default:
System.out.println("今天是星期天");
break;
}
}
}
运行结果如图
3.2case的穿透性
即:一个case不写break,自动执行其后所有语句。
实例:
public class Demo11SwitchNotice{
public static void main(String[] args){
int number=2;
switch(number){
case 2:
System.out.println("1树干");
case 3:
System.out.println("3山");
break;
case 4:
System.out.println("4旗子");
break;
default:
System.out.println("5手指");
break;
}
}
}
运行结果:
3.3 switch使用的注意事项
- 多个case后面的数值不可以重复,否则编译错误
- swtich后括号里的表达式数据类型只能是以下6种
基本数据类型:byte、short、char、int
引用数据类型:String字符串、enum枚举 - 先执行case最后执行default,语句前后顺序灵活,最后一个break可省略但不建议。
第四章 循环语句
4.1概述
满足循环条件反复执行某一段代码,判断条件为false结束循环。
4.2循环语句1——for
格式:
for(初始化表达式①;布尔表达式②;步进表达式③){
循环体③
}
执行流程:
循环之后步进,①②③④→②③④→…→不满足②为止。如图所示。
实例1:输出10次语句
public class Demo12For{
public static void main(String[] args){
//定义初试变量i,用for输出十次“注意单词拼写”
int i;
for(i=0;i<10;i++){
System.out.println("注意单词拼写"+(i+1));
}
}
}
运行结果:
实例2:计算1-100之间的偶数和
public class Demo13Sum{
public static void main(String[] args){
//1.定义一个初始值为0的变量表示和
int sum=0;
//2.利用for循环调取1-100之间的数字
for(int i=1;i<=100;i++){
//3.判断获取的数是奇数还是偶数
if(i%2==0){
//如果是偶数就累加求和
sum+=i;
}
//循环结束之后打印累加结果
}
System.out.println("Sum:"+sum);
}
}
4.3循环语句2——while
标准格式:
while(条件判断){
循环体
}
扩展格式:
初始化表达式①
while(布尔表达式②){
循环体③;
步进表达式④;
}
执行流程:
①②③④→②③④→…→不满足②为止。如图所示。
实例1:while输出10次Hello World!
public class Demo14While{
public static void main(String[] args){
//定义变量i初始值为0
int i=0;
//循环10次
while(i<10){
//输出字符串
System.out.println("Hello World!"+(i+1));
//变量步增
i++;
}
}
}
运行结果:
实例2:计算1-100之间数的和
public class Demo15WhileSum{
public static void main(String[] args){
//定义变量i、sum初试值
int i=1;
int sum=0;
while(i<=100){
sum+=i;
i++;
}
System.out.println(sum);
}
}
运行结果:
4.4循环语句3——do…while
标准格式
do{
循环体
}while(条件判断);
扩展格式
初始化表达式①
do{
循环体③
步进表达式④
}while(布尔表达式②);
执行流程
无条件执行一次循环体,判断条件和此无关。①③④→②③④→…→不满足②为止。如图所示。
实例1:输出十次语句
public class Demo15DoWhile{
public static void main(String[] args){
//1.初始化表达式
int i=1;
do{
System.out.println("抓紧时间!"+i);
i++;
}while(i<=10);//条件判断
}
}
运行结果:
4.5循环语句的区别
- 如果条件判断从来没有满足过,那么for循环和while循环会执行0次,但do…while会执行至少一次。
- for循环的变量在小括号中定义,只有循环内部才可以使用(for(int i=0; ; )),while循环和do…while循环初始化语句本来就在外面,所以出来循环后可以继续使用。
- 在已知循环次数的时候推荐用for,循环次数未知的时候推荐用while
4.6跳出语句
break
- 使用场景:终止switch或者循环(switch语句/循环语句)
实例 :打印完2次HelloWorld之后结束循环
public class Demo16Break{
public static void main(String[] args){
//需求:打印完2次HelloWorld之后结束循环
for(int i=1;i<10;i++){
if(i==3){
break;
}
System.out.println("HelloWorld");
}
}
}
运行结果:
continue
- 使用场景:结束本次循环,不执行后面语句,继续下一次循环
实例:不打印第3次HelloWorld
public class Demo17Continue{
public static void main(String[] args){
for(int i=1;i<=10;i++){
if(i==3){
continue;
}
System.out.println("HelloWorld"+i);
}
}
}
运行结果:
第五章 扩展知识点
5.1死循环
即循环条件永远为true,例如while(true){}。
结束死循环,需要使用跳出语句。
5.2 嵌套结构
即一个循环的循环体是另一个循环。总循环次数=外循环次数*内循环次数。
格式:
for(初始化表达式①; 循环条件②; 步进表达式⑦) {
for(初始化表达式③; 循环条件④; 步进表达式⑥) {
执行语句⑤;
}
}
执行流程:
执行顺序:①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥。外循环一次内循环多次。如跳绳:5组(外循环),一组10个(内循环)。
实例:打印5*8矩阵
public class Demo18Matrix{
public static void main(String[] args){
//控制外循环5次
for(int i=1;i<6;i++){
//控制内循环8次
for(int j=1;j<9;j++){
System.out.println("*");
}
System.out.println();
}
}
}
运行结果如图: