JavaStudy03 流程控制语句

来源:Day03流程控制语句

今日内容

  • 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使用的注意事项

  1. 多个case后面的数值不可以重复,否则编译错误
  2. swtich后括号里的表达式数据类型只能是以下6种
    基本数据类型:byte、short、char、int
    引用数据类型:String字符串、enum枚举
  3. 先执行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();
		}
	}
}

运行结果如图:
在这里插入图片描述

发布了20 篇原创文章 · 获赞 1 · 访问量 487

猜你喜欢

转载自blog.csdn.net/MF507/article/details/104517216