day03【 流程控制语句】

day03【 流程控制语句】

一. 顺序结构

  • 代码从上到下依次执行

二. 选择结构

1. if语句(重点)

(1) if语句

格式

if (判断条件) {
    语句体;
}

执行流程

  • 看判断条件的结果:
    • 如果为true, 就执行语句体
    • 如果为false, 就不执行语句体

举例

// 定义变量, 用来记录是否有暴雨
boolean isHeavyRain = true;
// 是否是有暴雨的
if (isHeavyRain == true) {
    // 推送信息
    System.out.println("深圳气象台发布了:橙色暴雨预警");
}
(2) if-else语句

格式

if (判断条件) {
    语句体1;
}else {
    语句体2;
}

执行流程

  • 看判断条件的结果:
    • 如果为true, 就执行语句体1;
    • 如果为false, 就执行语句体2;

举例

		// 上网
		
		// 创建变量, 用来代表年龄
		int age = 15;
		
		// 如果是成年人, 就可以上网
		if (age >= 18) {
			System.out.println("恭喜你, 可以上网啦!~");
		}else {
			// 如果是未成年, 就告诉你家长
			System.out.println("恭喜你, 你爹知道了!~");
		}
(3) if-else if语句

格式

if (判断条件1) {
    语句体1;
}else if (判断条件2) {
    语句体2;
}else if (判断条件3) {
    语句体3;
}
...
else if (判断条件n) {
    语句体n;
}else {
    语句体n + 1;
}

执行流程

  • 看判断条件1的结果
    • 如果为true, 执行语句体1, 整个if语句结束
    • 如果为false, 就继续向下判断下一个判断条件…
  • 如果每一个if判断条件的结果都为false, 那么就执行最后的else中的语句体.

else: 可以不写, 但是建议写上, else可以对特殊情况进行处理

举例

  • 需求: 定义变量, 用来代表成绩, 对成绩进行判断,按照等级输出结果
    • 100 ~ 80: 优秀
    • 79 ~ 60: 及格
    • 59~ 30: 不及格
    • 29 ~ 0: 请家长
		
// 定义变量, 用来代表成绩
int score = 20;
if (score >= 80 && score <= 100) {
    System.out.println("优秀!");
}else if (score >= 60 && score < 80){
    System.out.println("及格!");
}else if (score >= 30 && score < 60) {
    System.out.println("不及格.");
}else if (score >= 0 && score < 30) {
    System.out.println("请家长!!!");
}else {
    System.out.println("成绩有误!~");
}

2. switch

格式

switch (常量/变量) {
    case1:   
        语句体1;
        break;
    case2:   
        语句体2;
        break;
    case3:   
        语句体3;
        break;
    case 值n:   
        语句体n;
        break;
    default:
        语句体n + 1;
        break;
}

执行流程

  • 用switch后面小括号中的内容, 和下面的每一个case, 进行从上到下的匹配:
    • 如果匹配成功(小括号中的内容和case后面的值相等), 就执行对应的语句体, switch语句结束.
    • 如果没有匹配成功, 就继续匹配下一个case.
  • 如果每一个case都没有匹配成功, 就执行最后的default中的语句体.

default可以不写, 但是建议写上.

举例

  • 需求: 定义变量, 用来代表星期(1~7), 根据变量的值, 输出是对应的"星期一(二, 三 …)"
		// 定义变量, 用来代表星期几
		int week = 1;
		switch (week) {
			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("今天是星期六");
				break;
			case 7:
				System.out.println("今天是星期天");
				break;
			default:
				System.out.println("星期有误!~");
				break;
		}

注意事项

  1. switch后面小括号中的内容可以是: byte, short, char, int, String(字符串), 枚举

  2. case后面的内容, 必须是常量.

  3. switch语句的结束条件, 1. 遇到了break, 2. 代码执行到右大括号

  4. default语句可以写在switch中的任何位置, 但是一定是最后执行

case穿透

  • 如果case匹配成功, 但是这个case没有break, 会继续向下执行, 下面的case都不会匹配, 直接执行语句体.

三. 循环结构

1. for循环(重点)

格式

// 初始化语句: 第一个执行, 只执行一次
// 判断条件: 结果是boolean类型
// 循环体后的操作语句: 循环体执行完之后, 再执行它
for (初始化语句; 判断条件; 循环体后的操作语句) {
    循环体;
}

执行流程

  • 先执行初始化语句, 只执行一次, 然后执行判断条件:
    • 如果是true, 执行循环体, 然后执行循环体后的操作语句, 然后再执行判断条件 …
    • 如果是false, for循环结束.

for循环学习的要求:

  1. 看到for循环, 要知道其中i的变化量
  2. 给定i的变化量, 写出对应的for循环

举例

  • 需求: 通过for循环, 打印1 ~ 10
		// 需求: 通过for循环, 打印1 ~ 10
		for (int i = 1; i <= 10; i++) {
			System.out.println(i);
		}

2. while循环(重点)

格式

while (判断条件) {
    循环体;
}

执行流程

  • 看判断条件的结果:
    • 如果为true, 就执行循环体, 然后继续执行判断条件
    • 如果为false, while循环结束

for和while的区别

  1. for循环中初始化语句定义的变量, 在for循环结束后就会消失.
  2. 如果明确循环次数使用for循环; 如果不明确循环次数使用while循环.

需求

  • 计算1+2+3+…+100的和
		// 计算1+2+3+...+100的和
		// 定义变量, 用来当做总和
		int sum = 0;
		// 获取1~100之间的每一个整数
		for (int i = 1; i <= 100; i++) {
			// 将每一个数和计算出的和, 进行相加
			sum = sum + i; // sum += i;
		}
		
		System.out.println(sum);
  • 有一张足够大的纸(纸的厚度为0.01mm), 将它折成比珠穆朗玛峰(8844米)还高, 问要对折多少次.
/*
	已知: 纸的厚度, 珠峰的高度, 定义计数器(0)
	
	
    while (纸的厚度 < 珠峰的高度) {
    	循环体: 折纸
    	计数器自增
    }

*/
		// 有一张足够大的纸(纸的厚度为0.01mm), 
		// 将它折成比珠穆朗玛峰(8844米)还高, 问要对折多少次.
		// 统一成整数
		// 纸的厚度  (毫米 乘以 100)
		int zhi = 1;
		// 珠峰的高度
		int zhu = 884400000;
		// 定义计数器
		int count = 0;
		
		while (zhi < zhu) {
			// 折纸
			zhi = zhi * 2; // zhi *= 2;
			// 计数器自增
			count++;
		}
		
		System.out.println("共折纸次数为: " + count);
		System.out.println("折纸后纸的厚度为: " + (zhi / 100000));

3. do-while循环(了解)

格式

do {
    循环体;
}while(判断条件);

do-while循环,的第一次循环体不会进行判断.

4. 循环的跳转语句

  • break: 可以用在switch中, 用来结束switch语句; 可以用在循环中, 用来结束循环.
  • continue: 只能用在循环中, 用来结束本次循环, 继续进行下一次循环.

四. 扩展知识点

1. 死循环(无限循环)

  • for循环中的无限循环
for (;;) {
    循环体
}
  • while循环的无限循环
while (true) {
    循环体;
}

2. 循环嵌套(了解)

/*

	打印4行5列的星星矩阵

	*****
	*****
	*****
	*****

*/
public class Demo03 {
	public static void main(String[] args) {
		// 外循环执行一次, 内循环执行一圈
		for (int i = 1; i <= 4; i++) {		// 外循环
			// 打印一行的5个星星, 加上换行
			for (int j = 1; j <= 5; j++) {	// 内循环
				System.out.print("*");
			}
			System.out.println(); // 换行
		}
	}
	
	/*
		此方法用于打印一行5个星星, 加上换行
	*/
	public static void print() {
		// 打印一行的5个星星, 加上换行
		for (int i = 1; i <= 5; i++) {
			System.out.print("*");
		}
		System.out.println(); // 换行
	}
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值