for、while循环(java基础知识四)
1.循环结构概述和for语句的格式及其使用
* 什么是循环结构
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
循环语句的组成 初始化语句: 一条或者多条语句,这些语句完成一些初始化操作。 判断条件语句: 这是一个boolean 表达式,这个表达式能决定是否执行循环体。 循环体语句: 这个部分是循环体语句,也就是我们要多次做的事情。 控制条件语句: 这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。
* 循环结构分类
for(初始化语句;判断条件语句;控制条件语句){ 循环语句; } 初始化语句; while(判断条件语句){ 循环语句; 控制语句; } 初始化语句; do{ 循环语句; 控制语句; }while(判断语句);
* 循环结构for语句的格式:
for(初始化表达式;条件表达式;增量表达式) { 循环体; }
* 执行流程
a:执行初始化语句
b:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
c:执行循环体语句;
d:执行控制条件语句
e:回到b继续。
* 案例演示
在控制台输出10次"helloworld" for(int x=1;x<=10;x++){ System,out.println("HelloWorld!"); }
2.循环结构for语句的练习之获取数据
* 案例演示
需求:请在控制台输出数据1-10 for (int x= 1;x<=10;x++){ System.out.println(x); } 需求:请在控制台输出数据10-1 for (int x=10;x>=1;x--){ System.out.println(x); }
* 注意事项
a:判断条件语句无论简单还是复杂结果是boolean类型。
b:循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
c:一般来说:有左大括号就没有分号,有分号就没有左大括号
3.循环结构for语句的练习之求和思想
* 案例演示
需求:求出1-10之间数据之和 int sum = 0; for(int x=1;x<=10;x++){ sum+=x; } System.out.println(sum); 需求:求1-100之和 int sum = 0; for(int x=1;x<=100;x++){ sum+=x; } System.out.println(sum); 需求:求出1-100之间偶数和 /*int sum=0; for(int x=2;x<=100;x+=2){ sum+=x; } System.out.println(sum); */ /* int sum=0; for(int x=1;x<=100;x++){ if(x%2==0){ system.out.println(sum); } } System.out.println(sum); */ 需求:求出1-100之间奇数和 /*int sum=0; for(int x=1;x<=100;x+=2){ sum+=x; } System.out.println(sum); */ /* int sum=0; for(int x=1;x<=100;x++){ if(x%2!=0){ system.out.println(sum); } } System.out.println(sum); */
4.在控制台输出所有的”水仙花数”
举例:153就是一个水仙花数。 * 153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153 for(int x=100;x<=999;x++){ int ge = x%10; int shi = x/10%10; int bai = x/100; if (ge*ge*ge+shi*shi*shi+bai*bai*bai==x){ System.out.println(x); } }
5.统计思想
需求:统计”水仙花数”共有多少个 int count=0; for(int x=100;x<=999;x++){ int ge = x%10; int shi = x/10%10; int bai = x/100; if (ge*ge*ge+shi*shi*shi+bai*bai*bai==x){ //System.out.println(x); count++; } } System.out.println(count);
6.循环结构while语句的格式和基本使用
* 循环while格式
while循环的基本格式: while(判断条件语句) { 循环体语句; } 完整格式: 初始化语句; while(判断条件语句) { 循环体语句; 控制条件语句; }
* 执行流程
a:执行初始化语句
b:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
c:执行循环体语句;
d:执行控制条件语句
e:回到b继续。
* 案例演示
需求:在控制台输出10次"helloworld" int x=1; while(x<=10){ System.out.println("helloworld"); x++; } 需求:请在控制台输出数据1-10 int x=1; while(x<=10){ System.out.println(x); x++ }
* 求和、统计练习
//求1-100之和 int sum = 0; int x = 1; while(x<=100){ sum+=x; x++; } //统计”水仙花数”共有多少个 int count=0; int x=100; while(x<=1000){ int ge = x%10; int shi = x/10%10; int bai = x/100; if (ge*ge*ge+shi*shi*shi+bai*bai*bai==x){ count++; } System.out.println(count);
* 7.循环结构do...while语句的格式和基本使用
* 循环结构do...while语句的格式
do { 循环体语句; }while(判断条件语句); 完整格式; 初始化语句; do { 循环体语句; 控制条件语句; }while(判断条件语句);
* 执行流程
a:执行初始化语句
b:执行循环体语句;
c:执行控制条件语句
d:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
e:回到b继续。
* 案例演示
需求:在控制台输出10次"helloworld" int x=1; do{ System.out.println(HelloWorld); x++; }while(x<=10); 需求:请在控制台输出数据1-10 int x=1; do{ System.out.println(x); x++; }while(x<=10);
8.循环结构三种循环语句的区别
1.do...while循环至少执行一次循环体。 2.而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
for循环和while循环的区别: A:如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。不知道用for循环。因为变量及早的从内存中消失,可以提高内存的使用效率。 B:建议: 如果是一个范围的,用for循环非常明确。 如果是不明确要做多少次,用while循环较为合适。 举例:吃葡萄。 while(x != 0)
9.循环结构注意事项
死循环: 写程序优先考虑for循环,再考虑while循环,最后考虑do…while循环。 A:一定要注意控制条件语句控制的那个变量的问题,不要弄丢了,否则就容易死循环。 B:两种最简单的死循环格式 while(true){...} for(;;){...}
10.循环案例
* 需求:请输出一个4行5列的星星()图案。 如图: ***** ***** ***** ***** 注意: System.out.println("");和System.out.print("");的区别 println--打印结果换行; print----打印结果不换行。 for(int x=1;x<=4;x++){ for(int y=1;y<=5;y++){ System.out.println(""); } }
需求:请输出下列的形状 * ** *** **** ***** for(int x=1;x<=5;x++){ for(int y=1;y<=x;y++){ System.out.println("*"); } }
需求:在控制台输出九九乘法表。 for(int x=1;x<=9;x++){ for(int y=1;y<=x;y++){ System.out.println(y+"*"+x+"="+y*x+"\t"); } }
11.控制跳转语句
A:什么是控制跳转语句 B:控制跳转语句的分类 *break continue return C:break的使用场景 D:案例演示 a:跳出单层循环 b:跳出多层循环 带标签的跳出---格式:标签名: 循环语句,标签名要符合Java的命名规则
for(int x=1; x<=10; x++) { if(x%3==0) { //在此处填写代码 //1.break; //2.contuine; //3.System.out.println(“Java基础班”); } System.out.println(“Java基础班”); } 我想在控制台输出2次:“Java基础班“ 我想在控制台输出7次:“Java基础班“ 我想在控制台输出13次:“Java基础班“
A:return的作用 返回 其实它的作用不是结束循环的,而是结束方法的。 return关键字不是为了跳转出循环体,更常用的功能是结束一个方法,也就是退出一个方法。跳转到上层调用的方法。 B:案例演示 return和break以及continue的区别? return是用来返回并结束方法的; break是将整个循环结束;用在switch语句和循环里, continue终止本次循环,继续下次循环;只能用在循环里。
12.方法概述和格式说明
* A:为什么要有方法 * B:什么是方法 * 方法就是完成特定功能的代码块 * C:方法的格式 * 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) { 函数体; return 返回值; } * D:方法的格式说明 方法格式解释: 修饰符 比较多,后面会详细介绍。目前public static 返回值类型 用于限定返回值的数据类型 方法名 一个名称,为了方便我们调用方法 参数类型 限定调用方法时传入参数的数据类型 参数名 是一个变量,接收调用方法时传入的参数 方法体 完成功能的代码 return 结束方法以及返回方法指定类型的值 返回值 程序被return带回的结果,返回给调用者
* A:如何写一个方法 * 返回值类型 明确功能结果的数据类型 * 参数列表 明确有几个参数,以及参数的类型 * B:案例演示 需求:求两个数据之和的案例 public static int getSum(int x , int y){ return x+y; } * C:有返回值类型的方法调用 * a:单独调用,一般来说没有意义,所以不推荐。 * b:输出调用,但是不够好。因为我们可能需要针对结果进行进一步的操作。 * c:赋值调用,推荐方案。 * D:没有明确返回值的函数调用: 其实就是void类型方法的调用 只能单独调用
方法练习: 需求:键盘录入两个数据,返回两个数中的较大值 public static int getMax(int x , int y){ return (x>y)?x:y; } 需求:键盘录入两个数据,比较两个数是否相等 public static boolean isEquals(int x , int y){ return x==y; }
方法注意事项: * a:方法不调用不执行 * b:方法与方法是平级关系,不能嵌套定义 * c:方法定义的时候参数之间用逗号隔开 * d:方法调用的时候不用在传递数据类型 * e:如果方法有明确的返回值,一定要有return带回一个值
需求:根据键盘录入的行数和列数,在控制台输出星形 public static void getSum(int a , int b){ for(int x=1;x<a;x++){ for(int y=1;y<b;y++){ System.out.println("*"); } } }
需求:根据键盘录入的数据输出对应的乘法表 public static void getSum(int a , int b){ for(int x=1;x<a;x++){ for(int y=1;y<b;y++){ System.out.println(y+"*"+x+"="+y*x+"\t"); } } }
13.方法重载和使用
* A:方法重载概述 * 在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。 与返回值类型无关,只看方法名和参数列表, 在调用时,虚拟机通过参数列表的不同来区分同名方法. * B:方法重载: * 在同一个类中,方法名相同,参数列表不同。与返回值类型无关。 * 参数列表不同: * A:参数个数不同 * B:参数类型不同 * C:参数的顺序不同(算重载,但是在开发中不用)