1、分类
- 顺序控制:程序从上到下顺序执行,没有跳转和判断逻辑
- 分支控制:让程序有选择的执行
- 循环控制:让你的代码可以循环的执行
2、顺序控制
就是正常的代码逻辑。
3、分支控制
3.1 if分支
分为:if单分支、if-else双分支、if-else if...-else多分支、嵌套分支。
题目:判断一个年份是否是闰年,闰年的条件是符合下面二者之一:
(1)年份能被 4 整除,但不能被 100 整除;
(2)能被 400 整除
public static void main(String[] args) {
int year = 2100;
System.out.println(isRunNian(year) ? year + "是闰年" : year + "不是闰年");
}
public static boolean isRunNian(int year){
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
return true;
}else{
return false;
}
}
题目:下面这个输出什么?
public static void main(String[] args) {
boolean b = true;
if (b == false){ //这里输出b,如果把 b==false 改成 b=false 输出c
System.out.println("a");
}else if (b){
System.out.println("b");
}else if (!b){
System.out.println("c");
}else{
System.out.println("d");
}
}
题目:参加歌手比赛,如果初赛成绩大于 8.0 进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组, 输入成绩和性别,进行判断和输出信息。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输出选手的成绩");
double score = scanner.nextDouble();
if (score >= 8.0) {
System.out.println("请输出选手的性别");
char gender = scanner.next().charAt(0);
if (gender == '男'){
System.out.println("进入男子组");
}else if (gender == '女'){
System.out.println("进入女子组");
}else {
System.out.println("性别输入有误");
}
}else{
System.out.println("你好,成绩不合格,你被淘汰了");
}
}
3.2 switch分支
语法:
流程图如下:
如果case语句种没有break,那么就继续执行下一个case中的语句,这个叫做穿透。
switch(表达式),表达式的返回值必须是byte、short、int、char、enums,String类型。
switch和if语句的区别?
- 如果判断的具体数值不多,而且符合 byte、 short 、int、 char, enum[枚举], String 这 6 种类型。虽然两个语句都可以使用,建议使用 swtich 语句。
- 其他情况:对区间判断,对结果为 boolean 类型判断,使用 if,if 的使用范围更广。
4、循环控制
4.1 for循环
语法:
细节:
- for(;循环判断条件;) 中的初始化和变量迭代可以写到其它地方,但是两边的分号不能省略。
- 循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开。
4.2 while循环
语法:
4.3 dowhile循环
语法:
循环变量初始化;
do{
循环体(语句);
循环变量迭代;
}while(循环条件);
先执行一次再判断,固定至少执行一次。
上面这些循环可以嵌套执行。
4.4 跳转控制(break、continue)
- continue语句用于结束本次循环,继续执行下一次循环
- continue 语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环 , 这个和前面的标签的使用的规则一样.
- break 语句用于终止某个语句块的执行,一般使用在 switch 或者循环[for , while , do-while]中