使用表驱动法改写以下代码,要求给出表设计过程,回答使用哪种访问方式,并给出最后的代码。 public StringgetLevel(float score){ Stringlevel = "优"; if(score <60 ){ level = "差"; }else if(score < 70) { level = "一般"; }else if(score < 80) { level = "中" }else if(score < 90) { level = "良"; } return level; }
时间: 2024-02-05 07:03:23 浏览: 144
一种P89LPC922自编ISP代码的设计和实现
使用表驱动法重写代码时,可以将分数与对应等级的映射关系存储在一个表中,然后根据输入的分数在表中查找对应的等级。这样可以减少代码量和重复判断的次数。
表设计过程如下:
| 分数区间 | 对应等级 |
| -------- | -------- |
| 0-59 | 差 |
| 60-69 | 一般 |
| 70-79 | 中 |
| 80-89 | 良 |
| 90-100 | 优 |
可以使用数组或Map作为表的数据结构。这里我们选择使用Map,将分数区间作为Map的Key,对应等级作为Value。
使用线性查找方式访问Map,遍历Map中的每个Key,判断输入分数是否在该Key对应的区间内,如果是,则返回该Key对应的Value,否则继续查找下一个Key。
重写后的代码如下:
```
import java.util.HashMap;
import java.util.Map;
public class ScoreLevel {
private Map<Float, String> levelMap = new HashMap<>();
public ScoreLevel() {
levelMap.put(0f, "差");
levelMap.put(60f, "一般");
levelMap.put(70f, "中");
levelMap.put(80f, "良");
levelMap.put(90f, "优");
}
public String getLevel(float score) {
for (Float key : levelMap.keySet()) {
if (score < key) {
return levelMap.get(key);
}
}
return "优";
}
}
```
在构造函数中初始化levelMap表,将分数区间和对应等级存储在Map中。在getLevel方法中,遍历Map中的每个Key,判断输入分数是否在该Key对应的区间内,如果是,则返回该Key对应的Value,否则继续查找下一个Key。如果没有找到对应的等级,则返回"优"。
阅读全文