一.随堂复习
(一)(了解)流程控制结构
1.顺序结构
2.分支结构
- if-else
- switch-case
3.循环结构
- for
- while
- do-while
(二)分支结构一:if-else
在程序中,凡是遇到了需要使用分支结构的地方,都可以考虑使用if-else。
基本语法
/**
* ClassName:IfElseTest
* Package:PACKAGE_NAME
* Description:if-else条件判断结构
* 格式1:if(条件表达式){
* 语句块;
* }
* 格式2:if(条件表达式){
* 语句块1;
* }else{
* 语句块2;
* }
* 格式3:if(条件表达式1){
* * 语句块1;
* * }else if(条件表达式2){
* * 语句块2;
* * }
* ...
* }else if(条件表达式n){
* 语句块n;
* }else{
* 语句块n+1;
* }
*
*/
public class IfElseTest {
public static void main(String[] args){
/*案例1: 成年人心率的正常范围是每分钟60-100次。体检时,如果心率不在此范围内,则提示需要做进一步的检查。*/
int heartBeats = 89;
if(heartBeats < 60 || heartBeats > 100){
System.out.println("需要进一步检查");
}
System.out.println("体检结束");
//***********************************************
int num = 13;
if(num % 2 ==0){
System.out.println(num + "是偶数");
}else{
System.out.println(num + "是奇数");
}
}
}
案例
import java.util.Scanner;
/**
* ClassName:IfElseTest2
* Package:PACKAGE_NAME
* Description:
* 案例:
* 由键盘输入三个整数分别存入变量num1、num2、num3,对它们进行排序(使用 if-else if-else),并且从小到大输出。
*/
public class IfElseTest2 {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入三个数");
int num1 = scan.nextInt();
int num2 = scan.nextInt();
int num3 = scan.nextInt();
if(num1 >= num2) {
if (num3 >= num1) {
System.out.println(num2 + "," + num1 + "," + num3);
} else if (num3 <= num2){
System.out.println(num3 + "," + num2 + "," + num1);
}else{
System.out.println(num2 + "," + num3 + "," + num1);
}
}else{
if (num3 >= num2) {
System.out.println(num1 + "," + num2 + "," + num3);
} else if (num3 <= num1){
System.out.println(num3 + "," + num1 + "," + num2);
}else{
System.out.println(num1 + "," + num3 + "," + num2);
}
}
scan.close();
}
}
(三)分支结构二:switch-case
1.在特殊的场景下,分支结构可以考虑使用switch-case
- 指定的数据类型: byte short char int;枚举类 (dk5.0)( String (jdk7.0)
- 可以考虑的常量值有限且取值情况不多
2.特别之处: case穿透
3.在能使用switch-case的情况下,推荐使用switch-case,因为比if-else效率稍高
基本语法
/**
* ClassName:SwitchCaseTest
* Package:PACKAGE_NAME
* Description:
* switch(表达式){
* case 常量1:
* //执行语句1
* break;
* case 常量2:
* //执行语句2
* break;
* ...
* default:
* //执行语句n
* //break;
* }
*
* 2.执行过程:根据表达式中的值,依次匹配case语句。一旦与某一个case中的常量相等,那么就执行此case中的执行语句。执行完此执行语句之后,
* 情况1: 遇到break,则执行break后,跳出当前的switch-case结构
* 情况2:没有遇到break,则继续执行其后的case中的执行语句。
* ...
* 直到遇到break或者执行完所有的case及default中的语句,退出当前的switch-case结构
* 3.说明:
* ① switch中的表达式只能是特定的数据类型。如下: byte / short / char / int 枚举(JDK5.0新增) / String(JDK7,0新增)
* ② case 后都是跟的常量,使用表达式与这些常量做相等的判断,不能进行范围的判断。
* ③ 开发中,使用switch-case时,通常case匹配的情况都有限。
* ④ break:可以使用在switch-case中。一且执行此break关键字,就跳出当前的switch-case结构
* ⑤ default:类似于if-else中的else结构。
* default是可选的,而且位置是灵活的。
*
*/
public class SwitchCaseTest {
public static void main(String[] args){
int num =1;
switch (num){
case 0:
System.out.println("zero");
break;
case 1:
System.out.println("one");
break;
case 2:
System.out.println("two");
break;
case 3:
System.out.println("three");
break;
default:
System.out.println("other");
break;
}
//*******************************
String season = "summer";
switch(season){
case "spring":
System.out.println("春暖花开");
break;
case "summer":
System.out.println("夏日炎炎");
break;
case "autumn":
System.out.println("秋高气爽");
break;
case "winter":
System.out.println("冬雪皑皑");
break;
default:
System.out.println("季节输入有误");
break;
}
}
}
案例
/**
* ClassName:SwitchCaseTest1
* Package:PACKAGE_NAME
* Description:案例3: 使用switch-case实现: 对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。
*
*/
public class SwitchCaseTest1 {
public static void main(String[] args){
int score = 88;
//方法1
//case穿透
switch (score/10){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("不及格");
break;
case 6:
case 7:
case 8:
case 9:
case 10:
System.out.println("及格");
break;
default: //110 时执行
System.out.println("成绩输入有误");
break;
}
//方法2
switch (score / 60){
case 0:
System.out.println("不及格");
break;
case 1: //110 时执行
System.out.println("及格");
break;
default:
System.out.println("成绩输入有误");
break;
}
}
}
import java.util.Scanner;
/**
* ClassName:SwitchCaseTest2
* Package:PACKAGE_NAME
* Description:案例:编写程序:从键盘上输入2023年的“month”和“day”,要求通过程序输出输入的日期为2023年的第几天。
*
*/
public class SwitchCaseTest2 {
public static void main (String[] args){
//1.使用Scanner,从键盘获取2023年的month、day
Scanner input = new Scanner(System.in);
System.out.println("请输入2023年的月份:");
int month = input.nextInt