我不想要那么多的if else
时间: 2023-08-12 09:59:32 浏览: 88
如果你不想使用太多的 if-else 语句,你可以考虑使用早返回和异常处理来简化代码。同时,你还可以使用 Java 8 的新特性,如 Optional 类和流操作,来使代码更加简洁。
```java
@Scheduled(cron = "00 20 0 * * *") // 秒、分、时、日期、月份、星期、年份(可省略)
public void processQuestionScores() {
// 获取当前日期
LocalDate currentDate = LocalDate.now();
int year = currentDate.getYear();
int month = currentDate.getMonthValue();
int day = currentDate.getDayOfMonth();
// 获取题库总条数
int totalCount = regularMapper.getTotalCount();
// 查询所有题目
List<String> questions = regularMapper.getAllRegulars();
// 遍历题目进行处理
for (int i = 0; i < questions.size(); i++) {
String question = questions.get(i);
if (question == null || question.isEmpty()) {
logger.info("未查询到任何问题");
continue;
}
try {
// 计算时间
long startTime = System.currentTimeMillis();
String answer = regularImpl.getAnswerUseKnowledgeBase(question);
long endTime = System.currentTimeMillis();
// 查询正确答案
String ranswer = regularMapper.getRegularModelById(String.valueOf(i + 1));
// 查询到正确答案,继续下一步处理
if (ranswer == null || ranswer.isEmpty()) {
logger.info("未查询到正确答案");
continue;
}
// 计算分数
double score = MakeScoreUtil.calculateMeteorScore(ranswer, answer);
// 得到正确分数,继续下一步处理
if (Double.isNaN(score)) {
logger.info("未得到正确分数");
continue;
}
// 保存记录
String source = "KidsGPT";
String version = year + "." + month + "." + day + "_version";
String spendTime = (endTime - startTime) + "ms"; // 计算处理时间
regularMapper.autoinsertRegular(question, answer, score, source, version, spendTime);
logger.info("问题:" + (i + 1) + ",保存成功");
} catch (Exception e) {
logger.error("查询题目答案时发生异常,问题编号:" + (i + 1) + ",异常信息:" + e.getMessage(), e);
}
}
}
```
在这个版本的代码中,我使用早返回来减少 if-else 嵌套的层级,并使用异常处理来处理异常情况。这样可以使代码更加简洁和易读。希望这个改进满足了你的要求!
阅读全文