文章目录
- 任务3、成绩等级评定
- (一)编程实现
- 方法一、采用并列式多分支结构评定成绩等级
- 方法二、采用嵌套式多分支结构评定成绩等级
- 方法三、采用延拓式多分支结构评定成绩等级
- 方法四、采用开关式多分支结构评定成绩等级
- (二)讲解知识点
任务3、成绩等级评定
对百分制成绩评定等级
(100, +∞):超出范围
[90, 100]:优秀
[80, 90):良好
[70, 80):中等
[60, 70):及格
[0, 60):不及格
(-∞, 0):超出范围
(一)编程实现
方法一、采用并列式多分支结构评定成绩等级
第1个分数段: s c o r e > 100 , s c o r e ∈ ( 100 , + ∞ ) score \gt 100, score \in (100, +\infty) score>100,score∈(100,+∞) - 超出范围
第2个分数段: 90 ≤ s c o r e ≤ 100 , s c o r e ∈ [ 90 , 100 ] 90 \le score \le 100, score \in [90, 100] 90≤score≤100,score∈[90,100] - 优秀
第3个分数段: 80 ≤ s c o r e < 90 , s c o r e ∈ [ 80 , 90 ) 80 \le score \lt 90, score \in [80, 90) 80≤score<90,score∈[80,90) - 良好
第4个分数段: 70 ≤ s c o r e < 80 , s c o r e ∈ [ 70 , 80 ) 70 \le score \lt 80, score \in [70, 80) 70≤score<80,score∈[70,80) - 中等
第5个分数段: 60 ≤ s c o r e < 70 , s c o r e ∈ [ 60 , 70 ) 60 \le score \lt 70, score \in [60, 70) 60≤score<70,score∈[60,70) - 及格
第6个分数段: 0 ≤ s c o r e < 60 , s c o r e ∈ [ 0 , 60 ) 0 \le score \lt 60, score \in [0, 60) 0≤score<60,score∈[0,60) - 不及格
第7个分数段: s c o r e < 0 , s c o r e ∈ ( − ∞ , 0 ) score \lt 0, score \in (-\infty, 0) score<0,score∈(−∞,0) - 超出范围
在p02.t03创建Task3_1
package a01.b01.c03;
import java.awt.*;
import java.util.Scanner;
/**
* 功能:采用并列式多分支结构评定成绩等级
* 作者:李悦
* 日期:2022年03月31日
*/
public class Task3_1 {
public static void main(String[] args) {
//声明部分
int score;
String level;
Scanner sc = new Scanner(System.in);
//输入部分
System.out.print("score = ");
score = sc.nextInt();
//处理部分
level = "";
if(score <0 || score > 100) level = "超出范围";
if (score >= 99 && score <=100) level = "优秀";
if (score >= 80 && score <=90) level = "良好";
if (score >= 70 && score <=80) level = "中等";
if (score >= 60 && score <=70) level = "及格";
if (score >= 0 && score <=60) level = "不及格";
//输出部分
System.out.println(level);
}
}
· 运行结果
· 总结:并列式多分支结构,优点是易于理解,但缺点是效率低
方法二、采用嵌套式多分支结构评定成绩等级
· 创建Task03_2
package a01.b01.c03;
import java.util.Scanner;
/**
* 功能:采用嵌套式多分支结构评定成绩等级
* 作者:李悦
* 日期:2022年03月31日
*/
public class Task03_2 {
public static void main(String[] args) {
//声明部分
int score;
String level;
Scanner sc = new Scanner(System.in);
//输入部分
System.out.print("score = ");
score = sc.nextInt();
//处理部分
level = "";
if (score > 100) {
level = "超出范围";
} else {
if (score >= 90) {
level = "优秀";
} else {
if (score >= 80) {
level = "良好";
} else {
if (score >= 70) {
level = "中等";
} else {
if (score >= 60) {
level = "及格";
} else {
if (score > 0) {
level = "超出范围";
}
}
}
}
}
}
// 输出部分
System.out.println(level);
}
}
· 输出结果
方法三、采用延拓式多分支结构评定成绩等级
· 创建Task03_3
package a01.b01.c03;
import com.sun.source.util.SourcePositions;
import java.util.Scanner;
/**
* 功能:采用延拓式多分支结构评定成绩等级
* 作者:李悦
* 日期:2022年04月07日
*/
public class Task03_3 {
public static void main(String[] args) {
//声明部分
int score;
String level;
Scanner sc = new Scanner(System.in);
//输入部分
System.out.print("score = ");
score = sc.nextInt();
//处理部分
level = "";
if (score > 100) {
level = "超出范围";
} else if (score >= 90) {
level = "优秀";
} else if (score >= 80) {
level = "良好";
} else if (score >= 70) {
level = "中等";
} else if (score >= 60) {
level = "及格";
} else if (score >= 0) {
level ="不及格";
}
//输出部分
System.out.println(level);
}
}
· 输出结果
方法四、采用开关式多分支结构评定成绩等级
· 创建Task03_4
package a01.b01.c03;
import java.util.Scanner;
/**
* 功能:
* 作者:李悦
* 日期:2022年04月07日
*/
public class Task03_4 {
public static void main(String[] args) {
//声明部分
int score;
String level;
Scanner sc = new Scanner(System.in);
//输入部分
System.out.print("score = ");
score = sc.nextInt();
//处理部分
level = "";
if (score < 0 || score > 100) {
level = "超出范围";
} else {
switch (score / 10) {
case 10:
case 9:
level = "优秀";
break;
case 8:
level = "良好";
break;
case 7:
level = "中等";
break;
case 6:
level = "及格";
break;
default:
level = "不及格";
}
}
// 输出部分
System.out.println(level);
}
}
(二)讲解知识点
多分支结构可有四种处理方式:并列式、嵌套式、延拓式、开关式
· 1、并列式多分支结构
if (条件1) {
语句组1
}
if (条件2) {
语句组2
}
……
if (条件n) {
语句组n
}
· 2、嵌套式多分支结构
if (条件) {
if (条件1) {
语句组1
} else {
……
}
} else {
if (条件2) {
语句组2
} else {
……
}
}
· 3、延拓式多分支结构
if (条件1) {
语句组1
} else if (条件2) {
语句组2
}
……
} else if (条件n) {
语句组n
} else {
语句组n+1
}
· 4、开关式多分支结构
switch (测试表达式) {
case 值1:
语句组1
break;
case 值2:
语句组2
break;
……
case 值n:
语句组n
break;
default:
语句组n+1
}