选择结构之if【重点之重点:应用】
循环结构【重点之重点:应用】
修改类/包的名称:
1.右键/Refactor/Rename
2.快捷键: shift + f6
3.直接修改class关键字后面的名称,alt+回车-->Rename file
创建包/类/模块的快捷键: alt + insert
有的笔记本电脑insert键位的使用需要按住fn键
有的笔记本电脑上的insert键被简写成ins
自动补全代码: ctrl + shift + 回车
向下换行: shift + 回车
向上换行: ctrl + alt + 回车
第一章 流程控制
1.1 流程控制分类
流程:简单来讲所谓流程就是完成一件事情的多个步骤组合起来就叫做一个流程 注意: 在一个流程程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。 举例: 现在你正在学习Java基础课程 流程: 学习Java的想法 --> 网站和咨询老师沟通 --> 安排课程 --> 听课 流程控制语句分类 1.顺序结构: 按照代码的书写顺序,从上到下依次执行,一条道走到黑 2.选择结构: (1)if语句: 重点 (2)switch语句:非重点 3.循环结构: (1)for循环: 重点中的重点 (2)while循环: 重点 (3)do-while循环: 非重点
1.2 顺序结构
public class Demo02Sequence { public static void main(String[] args) { System.out.println("今天天气不错....1"); System.out.println("挺风和日丽的....2"); System.out.println("我们上午响哥java课....3"); System.out.println("这的确挺爽滴.....4"); } }
第二章 选择结构-if【重点】
2.1 if语句的第一种格式介绍
英文单词if是: 如果的意思 1.if语句的第一种格式: if(布尔表达式){ 语句体; } 其它语句; 2.执行流程: (1)计算布尔表达式的结果,看是true还是false (2)如果布尔表达式的结果是true,就执行if后面{}中的语句体,接着执行其它语句 (3)如果布尔表达式的结果是false,不执行if后面{}中的语句体,直接执行其它语句 3.注意(不要死记硬背,多看看): (1)if语句的第一种格式,只适用于有一种情况的场景 (2)if后面()中的表达式,不管多么简单或者多么复杂,结果必须是布尔类型,要么是true,要么是false (3)if和后面的()之间以及()和{}之间都是没有分号的 (4)if后面的{}中的语句体要么被执行,要么被跳过 (5)if后面的{}中的语句体: 一条/多条语句(根据实际需求确定) (6)if后面的{}中如果只有一条语句,则可以省略{},但是对于初学者而言,建议保留
图解:
2.2 if语句的第一种格式练习
练习 需求1:判断a和b的值是否相等,如果相等,就在控制台输出:a等于b 需求2:判断a和c的值是否相等,如果相等,就在控制台输出:a等于c public class Demo01If { public static void main(String[] args) { //定义2个int变量a和b,并初始化 int a = 10, b = 20; //需求1:判断a和b的值是否相等 if(a==b) {//10==20:false System.out.println(a+"等于"+b); } //需求2:判断a和c的值是否相等 //定义int变量c,并初始化 int c = 10; if(a==c){//10==10:true System.out.println(a+"等于"+c); } System.out.println("其它语句...."); } }
2.3 if语句的第二种格式介绍
英文单词if是: 如果的意思 英文单词else是: 否则的意思 1.if语句的第二种格式: if(布尔表达式){ 语句体1; } else { 语句体2; } 2.执行流程: (1)计算布尔表达式的结果,看是true还是false (2)如果布尔表达式的结果是true,就执行if后面{}中的语句体1,接着执行其它语句 (3)如果布尔表达式的结果是false,就执行else后面{}中的语句体2,直接执行其它语句 3.注意(不要死记硬背,多看看): (1)if语句的第二种格式,只适用于有两种情况的场景,是一个二选一的情况 (2)if后面()中的表达式,不管多么简单或者多么复杂,结果必须是布尔类型,要么是true,要么是false (3)if和后面的()之间以及()和{}之间以及else和前后的{}都是没有分号的 (4)语句体1和语句体2必须只有一个会被执行,属于二选一的情况 (5)if和else后面的{}中的语句体: 一条/多条语句(根据实际需求确定) (6)if和else后面的{}中如果只有一条语句,则可以省略{},但是对于初学者而言,建议保留
图解:
2.4 if语句的第二种格式练习判断大小
需求: 判断a是否大于b,如果是,在控制台输出:a的值大于b,否则,在控制台输出:a的值不大于b 实现步骤: 1.定义2个int变量a和b,并初始化 2.使用if语句第二种格式判断a和b的大小 2.1 如果a>b 输出 "a的值大于b" 2.2 否则,输出 "a的值不大于b"
public class Demo02IfElse { public static void main(String[] args) { //1.定义2个int变量a和b,并初始化 int a = 10, b = 20; //2.使用if语句第二种格式判断a和b的大小 if (a > b) { //2.1 如果a>b 输出 "a的值大于b" System.out.println(a + "的值大于" + b); } else { //2.2 否则,输出 "a的值不大于b" System.out.println(a + "的值不大于" + b); } System.out.println("其它语句...."); } }
2.5 if语句的第二种格式练习获取最大值
需求: 获取键盘录入的两个整数数字(int),计算出两个整数数字的最大值,并输出最大值 实现步骤: 1.创建键盘录入Scanner类的对象 2.获取键盘录入的两个整数数字,保存到两个int变量a和b中 3.使用if-else语句获取a和b的最大值,保存到int变量max中 4.输出max的值
import java.util.Scanner; public class Demo03IfElse { public static void main(String[] args) { //1.创建键盘录入Scanner类的对象 Scanner sc = new Scanner(System.in); //2.获取键盘录入的两个整数数字,保存到两个int变量a和b中 System.out.println("请输入第一个整数数字: "); int a = sc.nextInt(); System.out.println("请输入第二个整数数字: "); int b = sc.nextInt(); //3.使用if-else语句获取a和b的最大值,保存到int变量max中 int max;//定义int变量max,用来保存最大值 if(a>b){ max = a; } else { max = b; } //4.输出max的值 System.out.println("数字: "+a+" 和 "+b+" 的最大值是: "+max); } }
2.6 if语句的第二种格式练习判断奇偶数
需求: 任意给出一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数。 注意: 判断int变量num中的数字的奇偶性 偶数: num%2 == 0 奇数: num%2 != 0 实现步骤: 1.创建键盘录入Scanner类的对象(1.导包: 根据提示自动导包 2.创建对象) 2.获取键盘录入的一个整数数字,保存到int变量num中 3.使用if语句的第二种判断判断num中的数字的奇偶性,并输出对应的结果
public class Demo04IfElse { public static void main(String[] args) { //1.创建键盘录入Scanner类的对象(1.导包: 根据提示自动导包 2.创建对象) Scanner sc = new Scanner(System.in); //2.获取键盘录入的一个整数数字,保存到int变量num中 System.out.println("请输入一个整数数字: "); int num = sc.nextInt(); //3.使用if语句的第二种判断判断num中的数字的奇偶性,并输出对应的结果 if (num % 2 == 0) { //num除以2的余数是0: 说明是偶数 System.out.println(num + "是一个偶数数字"); } else { //num除以2的余数不是0: 说明是奇数 System.out.println(num + "是一个奇数数字"); } } }
2.7 if语句的第三种格式介绍
英文单词if是: 如果的意思 英文单词else是: 否则的意思 1.if语句的第三种格式: if(布尔表达式1){ 语句体1; } else if(布尔表达式2){ 语句体2; } ... else if(布尔表达式n){ 语句体n; } else { 语句体n+1; } 其它语句; 2.执行流程: (1) 首先计算布尔表达式1的值,判断其结果是true还是false (2) 如果是true就执行语句体1 (3) 如果是false就继续计算布尔表达式2,判断其结果是true还是false (4) 如果是true就执行语句体2 (5) 如果是false就继续计算布尔表达式…,判断其结果是true还是false (6) … (7) 如果没有任何布尔表达式为true,就执行语句体n+1 3.注意(不要死记硬背,多看看): (1)if语句的第三种格式,只适用于有多种(两种以上)情况的场景,是一个多选一的情况 (2)if后面()中的表达式,不管多么简单或者多么复杂,结果必须是布尔类型,要么是true,要么是false (3)if和后面的()之间以及()和{}之间以及else和前后的{}都是没有分号的 (4)语句体1到语句体n+1必须只有一个会被执行,属于多选一的情况 (5)if和else后面的{}中的语句体: 一条/多条语句(根据实际需求确定) (6)if和else后面的{}中如果只有一条语句,则可以省略{},但是对于初学者而言,建议保留 (7)最后一个else后面是没有条件的,是用来兜底的,如果前面的所有条件都不成立,执行最后一个else中的代码 (8)不能直接在else后面写条件,只能在if后面()中写条件 有if就可以写条件,没有if就不能写条件
图解:
2.8 if语句的第三种格式练习根据数字输出对应的星期
需求: 键盘录入一个星期数(1,2,...7),输出对应的星期一,星期二,...星期日 演示效果: 输入 1 输出 星期一 输入 2 输出 星期二 输入 3 输出 星期三 输入 4 输出 星期四 输入 5 输出 星期五 输入 6 输出 星期六 输入 7 输出 星期日 输入 其它数字 输出 数字有误 实现步骤: 1.创建键盘录入Scanner类的对象 2.获取键盘录入的代表星期数的1到7之间的整数数字,保存到int变量week中 3.因为week中的数字有7+1种情况,使用if语句第三种格式判断week的值,输出对应的星期几
public class Demo05IfElseWeek { public static void main(String[] args) { //1.创建键盘录入Scanner类的对象 Scanner sc = new Scanner(System.in); //2.获取键盘录入的代表星期数的1到7之间的整数数字,保存到int变量week中 System.out.println("请输入一个代表星期数的1到7之间的整数数字: "); int week = sc.nextInt(); //3.因为week中的数字有7+1种情况,使用if语句第三种格式判断week的值,输出对应的星期几 if (week == 1) { System.out.println("星期一"); } else if (week == 2) { System.out.println("星期二"); } else if (week == 3) { System.out.println("星期三"); } else if (week == 4) { System.out.println("星期四"); } else if (week == 5) { System.out.println("星期五"); } else if (week == 6) { System.out.println("星期六"); } else if (week == 7) { System.out.println("星期日"); } else /*if(week<1 || week>7)*/ {//隐藏条件: week<1 || week>7 System.out.println("您输入的星期数不存在,火星来的吧,哥屋恩..."); } System.out.println("其它语句...."); } }
public class Demo06IfElseWeek { public static void main(String[] args) { //1.创建键盘录入Scanner类的对象 Scanner sc = new Scanner(System.in); //2.获取键盘录入的代表星期数的1到7之间的整数数字,保存到int变量week中 System.out.println("请输入一个代表星期数的1到7之间的整数数字: "); int week = sc.nextInt(); //3.因为week中的数字有7+1种情况,使用if语句第三种格式判断week的值,输出对应的星期几 //排除非法数据 if(week<1 || week>7) { System.out.println("您输入的星期数不存在,火星来的吧,哥屋恩..."); } else if (week == 1) {//从这里开始执行: week>=1 && week<=7 的整数 System.out.println("星期一"); } else if (week == 2) { System.out.println("星期二"); } else if (week == 3) { System.out.println("星期三"); } else if (week == 4) { System.out.println("星期四"); } else if (week == 5) { System.out.println("星期五"); } else if (week == 6) { System.out.println("星期六"); } else /*if (week == 7)*/ {//隐藏条件: week==7 System.out.println("星期日"); } System.out.println("其它语句...."); } }
2.9 if语句的第三种格式练习根据成绩进行奖励
需求: 小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物, 假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。 [m,n]: 从m到n,包含m,包含n (m,n): 从m到n,不包含m,不包含n 奖励规则: 95~100 山地自行车一辆 包含95和100的 90~94 游乐场玩一次 包含90和94的 80~89 变形金刚玩具一个 包含80和89的 80以下 胖揍一顿 不包含80分的 注意: 数学中[95,100] 表示95到100之间,包含95,包含100 数学中(95,100) 表示95到100之间,不包含95,不包含100 实现步骤: 1.创建键盘录入Scanner类的对象 2.获取键盘录入的0到100的整数数字(代表小明的考试成绩),保存到int变量score中 3.使用if语句的第三种格式,根据score所在的不同区间,输出对应的奖励 注意: 数学中[95,100]: 95=<score<=100 java中[95,100]: score>=95 && score<=100
public class Demo07IfElseScore { public static void main(String[] args) { //1.创建键盘录入Scanner类的对象 Scanner sc = new Scanner(System.in); //2.获取键盘录入的0到100的整数数字(代表小明的考试成绩),保存到int变量score中 System.out.println("请输入小明的考试成绩(0到100之间的整数数日): "); int score = sc.nextInt(); //3.使用if语句的第三种格式,根据score所在的不同区间,输出对应的奖励 if (score >= 95 && score <= 100) { System.out.println("山地自行车一辆"); } else if (score >= 90 && score <= 94) { System.out.println("游乐场玩一次"); } else if (score >= 80 && score <= 89) { System.out.println("变形金刚玩具一个"); } else if (score < 80 && score >= 0) { System.out.println("胖揍一顿"); } else /*if (score < 0 || score > 100)*/ {//隐藏条件: score<0 || score>100 System.out.println("您输入的成绩是非法的,哥屋恩...."); } } }
public class Demo08IfElseScore { public static void main(String[] args) { //1.创建键盘录入Scanner类的对象 Scanner sc = new Scanner(System.in); //2.获取键盘录入的0到100的整数数字(代表小明的考试成绩),保存到int变量score中 System.out.println("请输入小明的考试成绩(0到100之间的整数数日): "); int score = sc.nextInt(); //3.使用if语句的第三种格式,根据score所在的不同区间,输出对应的奖励 //排除非法数据 if (score < 0 || score > 100) { System.out.println("您输入的成绩是非法的,哥屋恩...."); } else if (score >= 95 && score <= 100) {//代码执行到这里: score>=0 && score<=100 System.out.println("山地自行车一辆"); } else if (score >= 90 && score <= 94) { System.out.println("游乐场玩一次"); } else if (score >= 80 && score <= 89) { System.out.println("变形金刚玩具一个"); } else /*if (score < 80 && score >= 0)*/ { //隐藏条件: score < 80 && score >= 0 System.out.println("胖揍一顿"); } } }
图解:
第三章 循环结构【理解】
3.1 循环概述
循环的概念: 重复性的执行某些固定的功能,当条件不成立时,结束循环 说白了: 条件成立执行操作,条件不成立停止操作
3.2 循环组成
1.循环的组成(手写100遍HelloWorld案例): (1)【初始化表达式1】准备工作:笔墨伺候,最优先唯一执行一次的操作 (2)【循环条件2】条件判断:每次书写前,判断一下,要不要写 (3)【循环体3】循环所要进行的操作:手写一个HelloWorld案例 (4)【步进表达式4】扫尾的工作:每写一次HelloWorld,计数(+1) 2.执行流程: 1,2(true),3,4 --> 2(true),3,4 --> ... --> 2(false),结束循环 3.循环的分类: (1)for循环: 重点中的重点 (2)while循环: 重点 (3)do-while循环: 非重点
第四章 循环语句1--for【必须掌握】
4.1 for循环语句介绍
1.for循环格式: for (初始化表达式1;布尔表达式2;步进表达式4) { 循环体3; } 其它语句; 2.执行流程: 1,2(循环条件:true),3,4 --> 2(循环条件:true),3,4 --> ... --> 直到2(循环条件:false)为false时,结束for循环,执行后面的其它语句 3.注意: (1)for和(),以及()和{}之间是没有分号的 (2)()中有3个表达式,之间用2个分号(缺一不可)隔开,第三个表达式后面没有分号 (3)第二个表达式一定是布尔类型,结果只能是true和false (4)循环体就是一条/多条语句 4.总结 对于求和,计数的需求,解决方案: (1)循环的前面定义求和/计数变量 (2)循环的内部完成求和/计数功能的实现 (3)循环的后面打印求和/计数变量的结果数据
图解分析
4.2 for循环练习1
需求: 在控制台输出5次HelloWorld public class Demo01ForHello { public static void main(String[] args) { for (int count = 1; count <= 5; count++) { System.out.println("HelloWorld...." + count); } System.out.println("--------------------"); for (int times = 0; times < 5; times++) { System.out.println("HelloWorld...." + times); } System.out.println("其它语句..."); } }
4.3 for循环练习2
需求: 在控制台输出1-5和5-1的数据 public class Demo02For5 { public static void main(String[] args) { //在控制台输出1-5 for(int i = 1;i<=5;i++) { System.out.println(i); } System.out.println("-----------------"); //在控制台输出5-1 for (int j = 5; j >= 1; j--) { System.out.println(j); } System.out.println("其它语句...."); } }
4.4 for循环练习3
需求: 求1-5之间的数据和,并把求和结果在控制台输出 实现步骤: 1.定义int变量sum,初始值0,用来累加求和 2.使用for循环获取1到5之间的数字,循环变量int类型的num 3.把num中的数字,累加到求和变量sum中 4.打印sum的值
public class Demo03ForSum5 { public static void main(String[] args) { //1.定义int变量sum,初始值0,用来累加求和 int sum = 0; /* 第一次: sum是0,num是1 num<=5 --> 1<=5 --> true --> 执行循环体 sum = sum + num = 0 + 1 = 1 num++ --> num:2 第二次: sum是1,num是2 num<=5 --> 2<=5 --> true --> 执行循环体 sum = sum + num = 1 + 2 = 3 num++ --> num:3 第三次: sum是3,num是3 num<=5 --> 3<=5 --> true --> 执行循环体 sum = sum + num = 3 + 3 = 6 num++ --> num:4 第四次: sum是6,num是4 num<=5 --> 4<=5 --> true --> 执行循环体 sum = sum + num = 6 + 4 = 10 num++ --> num:5 第五次: sum是10,num是5 num<=5 --> 5<=5 --> true --> 执行循环体 sum = sum + num = 10 + 5 = 15 num++ --> num:6 第六次: sum是15,num是6 num<=5 --> 6<=5 --> false --> 不执行循环体,结束for循环,执行后面的输出语句 */ //2.使用for循环获取1到5之间的数字,循环变量int类型的num for(int num = 1;num<=5;num++) { //3.把num中的数字,累加到求和变量sum中 sum = sum + num; } //4.打印sum的值 System.out.println("1到5的数字之和: "+sum); } }
4.5 for循环练习4
需求: 求1-100之间的偶数和,并把求和结果在控制台输出 实现步骤: 1.定义int变量sum,初始值0,用来累加求和 2.使用for循环,获取1到100之间的数字,循环变量int类型num 2.1 判断num中的数字如果是偶数 2.2 把num中的偶数数字累加到求和变量sum中 3.打印求和结果sum的值
public class Demo04ForSumOu { public static void main(String[] args) { //1.定义int变量sum,初始值0,用来累加求和 int sum = 0; //2.使用for循环,获取1到100之间的数字,循环变量int类型num for (int num = 1; num <= 100; num++) { //2.1 判断num中的数字如果是偶数 if (num % 2 == 0) { //2.2 把num中的偶数数字累加到求和变量sum中 sum += num; } } //3.打印求和结果sum的值 System.out.println("1到100之间的偶数数字之和: "+sum); } }
4.6 for循环练习5
需求: 在控制台输出所有的“水仙花数” 解释:什么是水仙花数? 水仙花数,指的是一个三位数,个位、十位、百位的数字立方和等于原数 例如 153 3*3*3 + 5*5*5 + 1*1*1 = 27 + 125 + 1 = 153 实现步骤: 1.使用for循环获取所有的三位数字,循环变量int类型num 1.1 计算num中数字的个位,十位,百位,分别保存到int变量ge,shi,bai中 1.2 计算个位,十位,百位的立方和,保存到int变量sum中 1.3 判断如果num等于sum,说明是水仙花数字 1.4 打印num中的水仙花数字
public class Demo06ForSXH { public static void main(String[] args) { //1.使用for循环获取所有的三位数字,循环变量int类型num for (int num = 100; num <= 999; num++) { //1.1 计算num中数字的个位,十位,百位,分别保存到int变量ge,shi,bai中 int ge = num%10;//个位 int shi = num/10%10;//十位 int bai = num/100%10;//百位 //1.2 计算个位,十位,百位的立方和,保存到int变量sum中 int sum = ge*ge*ge + shi*shi*shi + bai*bai*bai; //1.3 判断如果num等于sum,说明是水仙花数字 if (sum == num) { //1.4 打印num中的水仙花数字 System.out.println(num); } } } }
4.7 for循环练习7
需求: 在控制台输出所有的“水仙花数”及总个数 解释:什么是水仙花数? 水仙花数,指的是一个三位数,个位、十位、百位的数字立方和等于原数 例如 153 3*3*3 + 5*5*5 + 1*1*1 = 27 + 125 + 1 = 153 实现步骤: 0.定义int变量count,初始值0,用来统计水仙花数字的个数 1.使用for循环获取所有的三位数字,循环变量int类型num 1.1 计算num中数字的个位,十位,百位,分别保存到int变量ge,shi,bai中 1.2 计算个位,十位,百位的立方和,保存到int变量sum中 1.3 判断如果num等于sum,说明是水仙花数字 1.4 计数器count的值增加1 1.5 打印num中的水仙花数字 2.for循环结束,打印count的值
计数思想:
public class Demo07ForSXHCount { public static void main(String[] args) { //0.定义int变量count,初始值0,用来统计水仙花数字的个数 int count = 0; //1.使用for循环获取所有的三位数字,循环变量int类型num for (int num = 100; num <= 999; num++) { //1.1 计算num中数字的个位,十位,百位,分别保存到int变量ge,shi,bai中 int ge = num % 10;//个位 int shi = num / 10 % 10;//十位 int bai = num / 100 % 10;//百位 //1.2 计算个位,十位,百位的立方和,保存到int变量sum中 int sum = ge * ge * ge + shi * shi * shi + bai * bai * bai; //1.3 判断如果num等于sum,说明是水仙花数字 if (sum == num) { //1.4 计数器count的值增加1 count++; //1.5 打印num中的水仙花数字 System.out.println(num); } } //2.for循环结束,打印count的值 System.out.println("以上水仙花数字总共有: " + count + " 个"); } }
第五章 循环语句2--while【重点】
5.1 while循环语句介绍
1.while循环格式: 初始化表达式1; while(布尔表达式2){ 循环体3; 步进表达式4; } 其它语句; 2.执行流程: 1,2(循环条件:true),3,4-->2(循环条件:true),3,4--> ... -->直到布尔表达式2(循环条件: false) 的结果为false,结束while循环,执行后面的其它语句 3.注意: (1)while和(),以及()和{}之间是没有分号的 (2)()中的表达式必须是布尔类型 (3)循环体就是一条/多条语句
5.2 while循环练习1
需求: 在控制台输出5次HelloWorld public class Demo01While { public static void main(String[] args) { int count = 1;//初始化表达式 while (count <= 5) {//循环条件 System.out.println("HelloWorld....." + count);//循环体 count++;//步进表达式 } System.out.println("其它语句"); } }
5.3 while循环练习2
需求: 世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米。 请问,我折叠多少次,可以折成珠穆朗玛峰的高度? 折纸(折叠后的厚度是原有厚度的2倍,而不是平方的关系): 原来: 0.1 paper 第一次: 0.1*2: 0.2 paper = paper * 2 第二次: 0.2*2: 0.4 第三次: 0.4*2: 0.8 第四次: 0.8*2: 1.6 ... 实现步骤: 1.定义int变量count,初始值0,用来统计折叠纸张的次数 2.定义2个double变量paper和zf,分别代表珠峰的高度和纸张的厚度,根据题目需求进行初始化 3.使用while循环统计折叠纸张的次数 3.1 初始化表达式: 步骤1和2中定义的变量 3.2 循环条件: 纸张的总厚度 小于 珠峰的高度 paper<zf 3.3 循环体: 计数器的值增加1 3.4 步进表达式: 折叠一次纸张 paper = paper * 2 4.while循环结束后,打印count的值
public class Demo02ZF { public static void main(String[] args) { //1.定义int变量count,初始值0,用来统计折叠纸张的次数 int count = 0; //2.定义2个double变量paper和zf,分别代表珠峰的高度和纸张的厚度,根据题目需求进行初始化 double paper = 0.1,zf = 8844430; //3.使用while循环统计折叠纸张的次数 //3.1 初始化表达式: 步骤1和2中定义的变量 //3.2 循环条件: 纸张的总厚度 小于 珠峰的高度 paper<zf while (paper < zf) { //3.3 循环体: 计数器的值增加1 count++; //3.4 步进表达式: 折叠一次纸张 paper = paper * 2 paper = paper*2; System.out.println("折叠第"+count+"次后,纸张的厚度: "+paper); } //4.while循环结束后,打印count的值 //1.34217728E7: 科学计数法 //1.34217728 * 10^7 ==> 13421772.8 System.out.println("总共折叠 "+count+ "次,达到珠峰的高度,最终纸张的厚度: "+paper); } }
第六章 循环语句3--do-while
6.1 do-while循环语句介绍
1.do-while循环格式: 初始化表达式1; do { 循环体3; 步进表达式4; } while (布尔表达式2); 其它语句; 2.执行流程: 1,3,4 --> 2(循环条件:true),3,4 --> 2(循环条件:true),3,4 --> 直到布尔表达式2(循环条件:false)的结果为false,结束do-while循环,执行后面的其它语句 3.注意: (1)do和{},{}和while,以及while后()之间都是没有分号的 (2)()中的表达式必须是布尔类型,而且()后面必须写一个分号,不写是语法格式错误 (3)循环体就是一条/多条语句 (4)代码从上到下依次执行,它是先执行循环体,再进行条件判断,所以对于do-while而言,循环体至少执行一次
图解:
6.2 do-while循环练习1
do-while循环练习: 在控制台输出5次HelloWorld public class Demo01DoWhileHello { public static void main(String[] args) { //初始化表达式 int count = 1; do { System.out.println("HelloWorld..." + count);//循环体 count++;//步进表达式 } while (count <= 5);//11<=5:false System.out.println("其它语句...."); } }
第七章 循环语句其它知识【理解】
7.1 循环语句的区别
三种循环的区别总结 1.建议使用的顺序: for,while,do-while 2.循环次数确定的话,建议使用for,循环次数不确定建议使用while 【先了解: 后面有使用场景】 循环次数不确定需要先写成死循环的格式【while好看】 --------明天讲解 3.do-while循环来讲的话,至少执行一次 4.while和do-while循环而言,循环结束后,初始化条件中定义的变量可以继续使用, 但是for循环的不能使用(在for循环内部定义初始化语句)
以下说法正确的是: ABCEF A: for循环是先判断条件,后执行循环体 B: while循环是先判断条件,后执行循环体 C: do-while循环是先执行循环体,后判断条件 D: for和while至少执行一次 E: for和while可以一次都不执行 F: do-while而言至少执行一次
/* 3.do-while循环来讲的话,至少执行一次 */ public class Demo01LoopDiff { public static void main(String[] args) { /* for循环: 先判断条件,后执行循环体 所以如果第一次计算判断条件的结果为false时, 直接结束for循环,循环体一次都不执行 */ for (int i = 3; i > 5; i--) { System.out.println("Hello...for..."+i); } /* while循环: 先判断条件,后执行循环体 所以如果第一次计算判断条件的结果为false时, 直接结束while循环,循环体一次都不执行 */ int j = 3; while (j > 5) { System.out.println("Hello...while..."+j); j--; } System.out.println("------------------"); int k = 3; /* do-while循环: 从上到下执行,先执行循环体,后计算判断条件,决定是否继续重复执行循环体 所以如果第一次计算判断条件的结果为false时,直接结束do-while循环 但是之前已经执行了一次循环体了 */ do { System.out.println("Hello...do...while..."+k); k--; } while(k>5); } }
/* while和do-while循环而言,循环结束后,初始化条件中定义的变量可以继续使用, 但是for循环的不能使用(在for循环内部定义初始化语句) */ public class Demo02LoopDiff { public static void main(String[] args) { for (int i = 1; i < 3; i++) { System.out.println("Hello...for...in..." + i); } //上面循环变量i是在for循环内部定义的,只能在for循环内部使用 //出了for循环就不能使用了 //System.out.println("Hello...for...out..." + i); System.out.println("------------"); int j = 1; while (j < 3) { System.out.println("Hello...while...in..." + j); j++; } //j是在while外面定义的,出了while循环仍然可以继续使用 System.out.println("Hello...while...out..." + j); System.out.println("------------"); int k = 1; do { System.out.println("Hello...do...while...in..." + k); k++; } while (k < 3); //k是在do-while外面定义的,出了do-while循环仍然可以继续使用 System.out.println("Hello...do...while...out..." + k); } }
7.2 死循环
/* 死循环 1.概念: 用不停止的循环,又叫做永真循环 2.分类: (1)for循环的死循环格式: for芬芬 for (; ; ) { ... } (2)while循环的死循环格式: while (true) { ... } (3)do-while循环的死循环格式: do { ... } while (true); */ public class Demo03DeadLoop { public static void main(String[] args) { /*for (int i = 5; 5 > 3; i++) { System.out.println("Hello"); }*/ /*for (; true; ) { System.out.println("Hello"); }*/ //省略布尔表达式,就是true /* //for循环的死循环格式 for (; ; ) { System.out.println("Hello"); }*/ //while循环的死循环格式 /*while (true) { System.out.println("Hello"); }*/ //do-while循环的死循环格式 do { System.out.println("Hello"); } while (true); } }