流程控制的结构分类
顺序结构
简介
1.程序从上往下逐行的执行,中间没有任何的判断和跳转
2.顺序结构是以整个块区为单位的语句,又称块语句。复合语句由“{”开始,“}”结束
2.是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。写在前面的先执行,写在后面的后执行。
分支结构
简介
1.分支结构也成选择结构
2.Java有三种分结构:单分结构和、双分支结构、Switcgh多分支结构
3.根据条件,选择性地执行某段代码
单分支结构
使用if条件语句,可选择是否要执行紧跟在条件之后的那个语句。关键字if之后是作为条件的“布尔表达式”,如果该表达式返回true,则执行其后的语句;若为false,则不执行if后的语句。
代码格式
if(关系表达式) {
语句体
}
代码执行流程
1.首先判断关系表达式看其结果是true还是false
2.如果是true就执行语句体
3.如果是false就跳过语句体执行其他语句体
代码执行流程图
例子
int a = 20;
if (a == 20){
System.out.println(a);
}
先定一个a为20的int变量,如果a等于20,则输出变量a的值,否则就不执行
双分支结构
if···else语句是条件语句中最常用的一种形式,它会针对某种条件有选择的作出处理。通常表现为“如果满足某种条件,就进行某种处理,否则就进行另一种处理”。
代码格式
if(关系表达式) {
语句体1;
}else {
语句体2;
}
代码执行流程
1.首先判断关系表达式,看其他结果是true还是false
2.如果结果是true就执行语句体1
3.如果结果是false就执行语句体2
流程图
例子
int math = 60; //定义一个数学分数
if(math >= 60){ // if判断语句判断math是否大于等于60
System.out.println("数学及格啦");
}else{ // if条件不成立
System.out.println("数学不及格");
}
定义一个60分的数学成绩,如果数学成绩大于或等于60,则打印“数学及格啦”,当数学成绩不大于或不等于60时,则打印“数学不及格”。
Switch多分支结构
代码格式
switch(表达式) {
case 目标值1:
语句体1
break;
case 目标值2:
语句体2
break;
…
case 目标值n:
语句体n
break;
default:
语句体n+1;
break;
代码执行流程
- switch表示这是switch语句
表达式的取值:byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是String - case后面跟的是要和表达式进行比较的值
- 语句体部分可以是一条或多条语句
- break表示中断,结束的意思,可以结束switch语句
- default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
代码执行流程
1.首先计算出表达式的值
2.其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
3.最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
流程图
例子
Scanner scan = new Scanner(System.in);
System.out.print("请输入今天星期几:");
int week = scan.nextInt(); //以上代码是先让用户输入今天星期几
switch (week) {
case 1: //用户输入数字1
System.out.println("星期一");//控制台打印星期一
break;//结束
case 2: //用户输入数字2
System.out.println("星期二");//控制台打印星期二
break;//结束
case 3: //用户输入数字3
System.out.println("星期三");//控制台打印星期三
break;//结束
case 4: //用户输入数字4
System.out.println("星期四");//控制台打印星期四
break;//结束
case 5: //用户输入数字5
System.out.println("星期五");//控制台打印星期五
break;//结束
case 6: //用户输入数字6
System.out.println("星期六");//控制台打印星期六
break;//结束
case 7: //用户输入数字7
System.out.println("星期七");//控制台打印星期七
break;//结束
default: //当用户输入7以上的数字
System.out.println("抱歉,请别输入1~7以外的数字");//控制台打印请别输入1~7以外的数字
break;//结束
}
循环结构
简介
1.Java有三种循环结构:for循环、while循环、dowhile循环,其中for循环最为常用。
2.循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需 要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
for循环
for循环语句是Java程序设计中最有用的循环语句之一。一个for循环可以用来重复执行某条语句,一直到某个条件得到满足。
代码格式
for(表达式1; 表达式2; 表达式3){
循环体
}
代码执行流程
①表达式1为初始化表达式,负责完成变量的初始化
②表达式2为循环条件表达式,指定循环条件
③表达式3为循环后操作表达式,负责修整变量,改变循环条件。
流程图
例子
int sum = 0; //定义一个sum变量
for (i=2;i<=100;i+=2){
sum += i
}
System.out.println(sum);
首先定义一个变量并赋初值,表示循环中i从2开始进行,然后条件为i小于或等于100,即当i小与或等于100时进行循环并执行语句块中的语句一直到i大于100,第三个表达式“i+=2”表示每次循环执行i=i+2,即每循环一次,i的值为在原来的基础上加2后的值。然后循环求sum的值,即2+4+6+8+···+100,当i=102时退出循环,执行输出语句,输出结果为2550。
while循环
代码格式
while循环语句的循环方式为利用一个条件来控制是否要继续反复执行这个语句。
基本格式
while(布尔表达式) {
循环体;
}
拓展格式
初始化表达式①
while(布尔表达式②){
循环体③
步进表达式④
}
代码执行流程
①负责完成循环变量初始化。
②负责判断是否满足循环条件,不满足则跳出循环。
③具体执行的语句。
④循环后,循环变量的变化情况。
流程图
例子
假设现在有1~10十个数字,我们要将它们相加求和,在学习while之前可能会直接用+运算符从1加到10,也就是1+2+3+4+5+6+7+8+9+10
int x =1;
int sum =0 ;
while(x<=10){
sum += x;
x++;
}
System.out.println(sum);
1.首先定义一个初值x为1
2.然后定义一个存储相加结果的变量sum为0
3.循环条件为x<=10,也就是每次判断x是否小于或等于10,只要x没有大于10就继续循环。
4.循环内第一句“sum +=x;”其实就是“sum = sum +x;”是在sum的基础上加x,并赋给sum,那么此时sum的值为0+1=1
5.然后x++,x自增1变成2,每循环一次x就自增加1,一直到x大于10
6.sum的值变为1+2=3,然后x++变为3,如此循环下去,直到x为11时退出循环,此时sum的值就是1+2+3+4+5+6+7+8+9+10最后的结果55了
do…while循环
1.do···while循环语句与while循环语句的区别是,while循环语句先判断条件是否成立再执行循环体,而do···while循环语句则先执行一次循环后,再判断条件是否成立。也即do···while至少执行一次。
2.一句表达就是:while先判断再执行,而do···while是先执行后判断
代码格式
基本格式
do {
循环体语句;
}while(布尔表达式);
拓展格式
初始化表达式①
do{
循环体③
步进表达式④
}while(布尔表达式②);
代码执行流程
①负责完成循环变量初始化
②负责判断是否满足循环条件,不满足则跳出循环。
③具体执行的语句
④循环后,循环变量的变化情况
流程图
例子
int x =10;
do{
System.out.println("x == " + x);
x--;
}while{x==8};
运行结果为:x == 10
先执行一次do后的语句块,输出“b == 10”
然后判断while条件b == 8不成立 ,循环结束
跳转语句
简介
刚开始的顺序结构中就有提到跳转语句
Java语言提供了三种跳转语句,分别是break语句、continue语句和return语句。
break语句
break语句刚刚在switch中已经见过了,是用来中止case的。实际上break语句在for、while、do···while循环语句中,用于强行退出当前循环,为什么说是当前循环呢,因为break只能跳出离它最近的那个循环的循环体,假设有两个循环嵌套使用,break用在内层循环下,则break只能跳出内层循环
例子
for(int i=0; i<n; i++) { // 外层循环
for(int j=0; j<n ;j++) { // 内层循环
break;
}
}
continue语句
continue语句只能用于for、while、do···while循环语句中,用于让程序直接跳过其后面的语句,进行下一次循环
例子
输出10以内的所有奇数
int i = 0;
while(i < 10) {
i++;
if(i%2 == 0){ // 当i能被2整除
continue; // 跳过当前循环
}
System.out.print(i + " ");
}
这里if条件判断是否为偶数,如果是偶数则执行continue,直接跳出本次循环,不进行continue后的步骤(即不执行输出语句),然后下一次循环为奇数,输出i
return语句
return语句可以从一个方法返回,并把控制权交给调用它的语句
例子
public void getName() {
return name;
}
这是一个方法用于获取姓名,当调用这个方法时将返回姓名值