标签:对比 question java 内容 变量 val sys 方法 一个
// 判断分数
@ResponseBody
@RequestMapping(value = "/queryScore")
public String queryScore(HttpServletRequest request) {
//获取页面的题目id
String[] testIds = request.getParameterValues("testId");
// 获取页面选项
String[] optionTypes = request.getParameterValues("answr");
//定义全局变量num,统计分数
int num=0;
//第一个for循环,循环页面题目的id,通过id来获取题目以及正确答案
for (int i = 0; i < testIds.length; i++) {
//定义空集合,来存储option表的id;
List<String> list = new ArrayList<String>();
//定义空数组来存储页面输入的答案。
List<String> answerList = new ArrayList<String>();
//通过id来获取question表里面的内容。
TestQuestion question = typeQuestionService.getQuestion(testIds[i]);
//通过id来获取option表的内容。
List<Map<String, Object>> optionList = typeQuestionService.queryOption(testIds[i]);
//第二个for循环,来循环遍历出option表的所有内容。
for (Map<String, Object> map : optionList) {
//将页面上与之对应的题目的选项id存储list集合。
String answer = map.get("option_id").toString();
list.add(answer);
}
//第三个for循环,获取页面选项的答案。
for (int j = 0; j < optionTypes.length; j++) {
//如果页面上每个题包含在option表的id对应下的选项下。
if(list.contains(optionTypes[j])){
//将包含的答案存储到答案集合answer中。
answerList.add(optionTypes[j]);
}
}
//如果所有的输入的答案长度<1,继续循环(无答案)。
if(optionList.size()<1){
continue;
}
//取出questtion表正确答案
String quAnswer = question.getTestRightOptions();
//1,单选,2,多选,3判断。
//如果对应的标记是1,3,那么走这个方法。
if("1".equals(question.getTestFlag())||"3".equals(question.getTestFlag())){
//因为是单选和判断,所以只需要取出第一个答案,错误即全错误。
if(quAnswer.equals(optionList.get(0))){
//加1分
num = num + 1;
}
}
//如果对应的标记是2,那么走这个方法。
if("2".equals(question.getTestFlag())){
//因为多选在数据库中存储的是正确答案的分割字符串,所以需要用String数组接收
String[] quAnswers = quAnswer.split(",");
//1、第一种方法。
//全局变量,默认错误数量是0,以便于后面计算错误的数量,如果错一个直接
//第一个是用错误来判断,计算分数。
// int errorNum = 0;
//第一个for,循环页面答案。
// for (String answer : answerList) {
//里层for,用来循环判断正确答案与页面输入答案的内容对比。
// for (int j = 0; j < quAnswers.length; j++) {
//如果页面答案和正确答案内容不一致,则+1
// if(!answer.equals(quAnswers[i])){
// errorNum++;
// }
// }
// }
//如果错误大于0,直接结束本循环,继续下一循环。
// if(errorNum>0){
// continue;
// }else{
//如果正确答案的长度==页面答案的长度,所以分数+2,(全对)
// if(quAnswers.length==answerList.size()){
// num = num + 2;
// }
//正确的数量,默认是0。
// int rightNum = 0;
//第二个for循环,循环正确答案。
// for (String answer : answerList) {
//循环正确答案,用来判断正确选项答对几个。
// for (int j = 0; j < quAnswers.length; j++) {
// if(answer.equals(quAnswers[i])){
//如果一样,+1,如果相同,2
// rightNum++;
// }
// }
// }
//通过上面的方法来获取半对的分数。
// num = num + 1*rightNum;
// }
int rightNum = 0;
for (String answer : answerList) {
for (int j = 0; j < quAnswers.length; j++) {
if(answer.equals(quAnswers[i])){
rightNum++;
}
}
}
if(rightNum==answerList.size()){
if(rightNum==quAnswers.length){
num = num + 2;
}else{
num = num + 1*rightNum;
}
}
}
}
return "/sys/queryTest";
}
标签:对比 question java 内容 变量 val sys 方法 一个
原文地址:https://www.cnblogs.com/layuechuquwan/p/11774940.html