在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句。
(1)顺序控制
(3)分支控制
(3)循环控制
1、顺序控制
程序从上到下顺序的执行,中间没有任何的判断或跳转,是最简单的控制结构
2、分支控制
让程序有选择的的执行,分支控制有三种
1、单分支if
基本语法
if(条件表达式){
执行代码块
}
2、双分支if-else
基本语法
if(条件表达式){
执行代码块1
}else{
执行代码块2
}
3、多分支if-elseif-…-else
基本语法
if(条件表达式){
执行代码块1
}else if{
执行代码块2
}else if{
执行代码块3
}else{
执行代码块4
}
4、switch…case
基本语法
switch(表达式){
case 常量1:
语句块1;
break;
case 常量2:
语句块2;
break;
...
default:
default语句块;
break;
}
需要强调的是:如果某个case判断成立后,执行完语句块没有break语句,则会执行下一个case的语句块,直到遇到break语句才会结束选择语句。所以break语句一定要注意
(1)表达式的数据类型,应和case后的常量保持一致,或者是可以自动转成可以相互比较的类型
(2)switch(表达式)中的表达式的返回值必须是(byte、short、int、char、enum、String)。例如double等类型编译就会报错。
(3)case语句中的值,必须是常量而不是变量
(4)default语句是可选的,当没有匹配的case时,执行default
(5)break语句用来在执行完一个case分支后使程序跳出switch语句块,如果没有写break,程序会顺序执行到switch结尾,除非遇到break。
import java.util.Scanner;
public class Switch01{
public static void main(String[] args){
Scanner scanner= new Scanner(System.in);
System.out.println("请输入一个字符");
char c = scanner.next().charAt(0);
switch(c){
case 'a':
System.out.println("这是a");
break;
case 'b':
System.out.println("这是b");
break;
case 'c':
System.out.println("这是c,但我后面没有break语句");
default:
System.out.println("这是其他字符");
break;
}
}
}
使用穿透解决问题
import java.util.Scanner;
public class Switch02{
public static void main(String[] args){
//根据用于指定月份,
//打印该月份所属的季节。
//3,4,5春季6,7,8夏季9,10,11秋季12,1,2冬季
//思路分析
//1.创建Scanner对象,接收用户输入
//2.使用intmonth接收
//3.使用switch来匹配,使用穿透来完成,比较简洁
Scanner myScanner=new Scanner(System.in);
System.out.println("输入月份");
int month=myScanner.nextInt();
switch(month){
case 3:
case 4:
case 5:
System.out.println("这是春季");
break;
case 6:
case 7:
case 8:
System.out.println("这是夏季");
break;
case 9:
case 10:
case 11:
System.out.println("这是秋季");
break;
case 1:
case 2:
case 12:System.out.println("这是冬季");
break;
default:
System.out.println("你输入的月份不对(1-12)");
}
}
}
3、循环控制
1、for循环
基本介绍:
听其名而知其意,就是让你的代码可以循环的执行。
基本语法
for(循环变量初始化;循环条件;循环变量迭代){
循环操作
}
for有四要素:
(1)循环变量初始化
(2)循环条件
(3)循环操作
(4)循环变量迭代
2、while循环
基本语法
while(循环条件){
循环体;
循环变量迭代;
}
3、do…while循环控制
基本语法
循环变量初始化;
do{
循环体(语句);
循环变量迭代;
}while(循环条件);
注意事项及细节说明
(1)循环条件是返回一个布尔值的表达式
(2)do…while循环是先执行,再判断,因此它至少执行一次
4、多循环控制
(1)将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for,while,do…while均可以作为外层循环和内层循环。【建议一般使用两层,最多不要超过3层,否则,代码的可读性很差】
(2)实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环
金典案例:九九乘法表、空心金字塔。
5、跳转控制语句
1、break
break语句用于终止某个语句块的执行,一般使用在switch或者循环[for,while,do-while]中
基本语法:
{.
.
.
.
break;
}
1、以while使用break为例,画出示意图
2、注意事项和细节说明
(1)break语句出现在多层嵌套的语句块中,可以通过标签指明要终止的是那一层循环的语句块
(2)标签的基本使用
标签放在循环的前面做声明,例如:
(3)break语句可以制定退出那一层循环
(4)如果没有指定标签,则退出离break最近的那一层循环体
(5)除非迫不得已,不然不建议使用标签
2、continue
(1)continue语句用于结束本次循环,继续执行下一次循环。
(2)continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环,这个和前面的标签的使用的规则一样
基本语法:
{
.
.
.
continue;
}
1、以while使用continue为例,画出示意图
2、注意事项和细节说明
(1)continue与break有所不同,continue只是跳出本次循环
(2)continue也可以通过定义标签来指定跳出哪一层循环
3、return
(1)返回方法指定类型的值(这个值总是确定的),
(2)结束方法的执行(仅仅一个return语句,目前猜测是只有返回值为void的方法可以这么使用)。
(3)如果是用在main方法中,直接退出程序。(这部分还有疑惑)