程序流程控制语句
文章目录
- 顺序结构
- 分支结构
-
- if分支
-
- 格式一:
- 格式二:
- 格式三:
- switch分支
-
- switch的穿透性
- if 和 switch 的特点
- 循环结构
-
- for循环
-
- for循环案例一
- for循环案例二
- while循环
-
- while循环案例
- do-while循环
-
- 三种循环的区别
- for 和 while 的区别:
- 死循环
-
- 死循环案例
- 循环嵌套
- 跳转关键字:break、continue
提示:记录一下课程学习笔记:
顺序结构
如果你没有写其他的结构,按照代码的先后顺序,依次执行程序中大多数的代码都是这样执行的
public class Test {public static void main( String[] args) {System.out.println( "A" );System.out.println( "B" );System.out.print1n( "C" );}}
分支结构
if分支
if 分支有三种格式
根据判定的结果(真或假)决定执行某个分支的代码
格式一:
if(条件表达式){语句体;}
执行流程:
首先判断条件表达式的结果,如果为true执行语句体,为false就不执行语句体
注意事项:
if 语句中,如果大括号控制的只有一行代码,则大括号可以省略不写。
格式二:
if(条件表达式){语句体1;}else {语句体2;}
执行流程:
首先判断条件表达式的结果,如果为true执行语句体1,为false 就执行语句体2
格式三:
if(条件表达式1){语句体1;}else if(条件表达式2){语句体2;} else if(条件表达式3){语句体4;}...else {语句体n+1;}
执行流程:
1、先判断条件1的值,如果为true则执行语句体1,分支结束;如果为false则判断条件2的值
2、如果值为true就执行语句体2,分支结束;;如果为false则判断条件3的值
3…
4、如果没有任何条件为true,就执行else分支的语句体n+1。
switch分支
也是匹配条件去执行分支,适合做值匹配的分支选择,结构清晰,格式良好。
switch(表达式){case值1:执行代码...;break;case值2:执行代码...;break;...case值n-1:执行代码...;break;default:执行代码n;}//例子:switch (a) {case 3:System.out.println("abc");break;default:System.out.println("xyz");}
执行流程:
先执行表达式的值,拿着这个值去与case后的值进行匹配。
匹配哪个case的值为true就执行哪个case,遇到break就跳出switch分支。
如果case后的值都不匹配则执行default代码。
switch分支注意事项:
表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String,不支持double、float、long。
case给出的值不允许重复,且只能是字面量,不能是变量。
不要忘记写break,否则会出现穿透现象。
switch的穿透性
如果代码执行到没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会进行任何匹配),直到遇到break才跳出分支,这就是switch的穿透性。
if 和 switch 的特点
if 其实在功能上远远强大于switch。
if 适合做区间匹配。
switch适合做:值匹配的分支选择、代码优雅。
循环结构
for循环
控制一段代码反复执行很多次。
//格式:for(初始化语句;循环条件;迭代语句){循环体语句(重复执行的代码);}//示例1//输出3次HelloWorldfor (int i = 0; i < 3; i++) {System.out.println( "Hello world" );}//示例2for (int A = 0; A < 5; A++) {for (int B = 0; B < 7; B++) {System.out.print("*");// 不换行打印星号}System.out.println();// 每打印一轮,进行一次换行}//示例2输出:/************************************ */
执行的流程:
循环一开始,执行int i= 0一次。
然后判断循环条件:0<3返回true ,进入到循环体中执行输出: helloWorld,然后执行迭代语句i++,此时i=1了。
然后判断循环条件:1<3返回true ,进入到循环体中执行输出:helloWorld,然后执行迭代语句i++t,此时i=2了。
然后判断循环条件:2<3返回true ,进入到循环体中执行输出: helloWorld,然后执行迭代语句i++,此时i=3了。
然后判断循环条件:3<3返回false,循环立即结束!!
for循环案例一
求和
需求:求1-5之间的数据和,并把求和结果在控制台输出。
分析:
1、定义for循环,使其能够依次产生:1、2、3、4、5。
for (int i = 1; i<= 5; i++){}
2、在循环外定义一个整数变量sum用于求和,循环每产生一个数,就累加到sum中去
int sum = 0;//使用循环控制输出1-5for (int i = 1; i<= 5; i++){//在循环外定义变量sum累加数据sum += i;}
3、循环结束后,输出求和变量即是结果。
for循环案例二
需求:求1-10之间的奇数和,并把求和结果在控制台输出。
方式一:
1、定义for循环,使其能够依次产生:1、2、3、4、5…10。
2、循环每产生一个数据,都通过 if 判断其是否是奇数
for (int i = 1; i <= 10; i++) {if (i % 2 == 1) {// i = 1 3 5 7...}}
3、在循环外定义一个整数变量sum,在 if 分支内来累加产生的奇数数据。
方式二
1、定义for循环,使其能够依次产生:1、3、5、7 、9(直接使用for循环找出奇数)
for ( int i = 1; i <= 10; i+=2) {}
2、在循环外定义一个整数变量sum,循环每产生一个奇数就累加到sum
while循环
//初始化语句;while(循环条件){循环体语句(被重复执行的代码);迭代语句;}//示例1int i = 0;while (i < 3) {System.out.println( "Hello world" );i++;}//示例2int a = 0;while(a <= 7) {System.out.println("a="+a);a++;}
什么时候用for循环,什么时候用while循环?
功能上是完全一样的,for能解决的while也能解决,反之亦然。
使用规范是:
知道循环几次:使用for
不知道循环几次建议使用: while。
while循环案例
需求:
世界最高山峰是珠穆朗玛峰(8848.86米=8848860毫米),假如我有一张足够大的纸,
它的厚度是0.1毫米。
请问,折叠多少次,可以折成珠穆朗玛峰的高度。
思路:
这种不清楚要循环多少次的情况可以选择用while实现
分析步骤
定义变量存储珠穆朗玛峰的高度、纸张的高度。
double peakHeight = 8848860;//山峰高度double paperThickness = 0.1;//纸张厚度
使用while循环,循环条件是(纸张厚度<山峰高度),内部控制纸张折叠,每折叠一次,纸张厚度为原来两倍,循环外定义计数变量,每折叠依次让该变量+1
int count = 0;while (paperThickness < peakHeight){paperThickness *= 2;count++;
do-while循环
先执行再判断循环条件。
//初始化语句;do {循环体语句;迭代语句;}while (循环条件);
特点:一定会先执行一次循环体。
int i = o;do {System.out.println("Hello World! ");i++;}while( i < 3);
三种循环的区别
for循环和while循环(先判断后执行)
do…while (第一次先执行后判断)
for 和 while 的区别:
for循环和while循环的执行流程是一模一样的。
如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环。
for循环中,控制循环的变量只在循环中可以使用。While循环中,控制循环的变量在循环后还可以继续使用。
int i = 0;while (i < 3) {System.out.println("Hello world" );i++;}System.out.println(i);
for (int i = 0; i < 3; i++ ) {System.out.println("He1lo world");}System.out.println(i);
死循环
一直循环的执行下去,如果没有干预不会停止下来
for(;;) {System.out.print1n( "Hello world" );}//经典做法while(true) {System.out.println( "Hello wor1d" );}do {System.out.println( "Hello world" );} while (true);
死循环案例
需求:
系统密码是520,请用户不断的输入密码验证,验证不对输出密码错误,验证成功输出欢迎进入系统,并停止程序。
分析:
使用while死循环,让用户不断输入数据
与密码比对:验证不成功输出密码错误、
验证成功输出欢迎进入系统,并使用break结束当前循环的执行。
循环嵌套
循环中又包含循环
外部循环每循环一次,内部循环全部执行完一次。
for(int i = 0; i < 3; i++) {//又循环for(int j = 0; j < 5; j++) {System.out.print1n(我爱你");}}
跳转关键字:break、continue
break
跳出并结束当前所在循环的执行。
可以用在嵌套循环中跳出整个外部循环的并立即结束它。
continue
用于跳出当前循环的当次执行,进入下一次循环。
可以用在嵌套循环中跳出外部循环的当次执行,进入外部循环的下一次。