探索面向对象编程
(一)编程实现
方法一、采用并列式多分支结构评定成绩等级
思路:有多少种情况,就并列写多少个单分支
第1个分数段:s c o r e > 100 , s c o r e ∈ ( 100 , + ∞ ) score > 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) - 超出范围
在net.nieyourong.p02.t03.Task03_1
怎么解决这个问题呢?很简单,在处理部分之前将level初始化为空字符串
运行程序,查看结果(测试七种情况)
总结:并列式多分支结构,优点是易于理解,但缺点是效率低(思考一下,为什么效率低)。
其实,这个程序可以作点优化,因为成绩大于100分或小于0分都是超出范围,所以可以将这两个并列的分之合而为一
方法二、采用嵌套多分支结构评定成绩等级
思路:从高分到低分来划分各个分数段
在net.nieyourong.p02.t03包Task03_2
运行程序,查看结果(测试七种情况)
总结:嵌套式多分支结构,优点是层次
方法三:采用延拓式多分支结构评定成绩等级
思路1:从高分到低分划分各个分数段
在net.nieyourong.p02.t03包里创建Task03_3类
运行程序,查看结果
思路2:从高分到低分划分各个分数段
在net.nieyourong.p02.t03包里创建Task03_3_类
运行程序,查看结果 (测试七种情况)
总结:延拓式多分支结构,优点是只有一层,并且效率高。希望大家掌握这一种方式。
方法四、采用开关式多分支结构评定成绩等级
关键点在于将成绩变量取整之后再整除10,以便将各个分数段转换成离散的整数值,这样才能用开关式多分支结构来进行处理
在net.nieyourong.p02.t03包里创建Task03_4_类
运行程序,查看结果
总结:开关式多分支结构,优点是书写简洁,并且效率高,但缺点是只能针对离散型的情况进行处理。
开关式多分支结构里的测试表达式,类型可以是整数、字符、甚至可以是字符串
(二)讲解知识点
多分支结构可有四种处理方式:并列式、嵌套式、延拓式、开关式
1、并列式多分支结构
if (条件1) {
语句组1
}
if (条件2) {
语句组2
}
……
if (条件n) {
语句组n
}
2、并列式多分支结构
if (条件1) {
语句组1
}
if (条件2) {
语句组2
}
……
if (条件n) {
语句组n
}
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
}