被这个问题烦很久了.
希望大家能帮忙解答下.
数据库中答案那里是这样的.
A&B&D
从用户那里得到一个数组.
["A", "B", "D"]
也可能是其子集.
也可能是["A", "B", "C"]
怎样判断正确,部分正确,错误呢.
不胜感激.
被这个问题烦很久了.
希望大家能帮忙解答下.
数据库中答案那里是这样的.
A&B&D
从用户那里得到一个数组.
["A", "B", "D"]
也可能是其子集.
也可能是["A", "B", "C"]
怎样判断正确,部分正确,错误呢.
不胜感激.
贴一个Java的:
[code="java"]
public class TTG extends TestCase {
public void testCase() {
assertEquals("right", check("A&B&D", new String[] { "A", "B", "D" }));
assertEquals("partRight", check("A&B&D", new String[] { "A" }));
assertEquals("partRightPartError", check("A&B&D", new String[] { "A", "C" }));
assertEquals("partRightPartError", check("A&B&D", new String[] { "A", "C", "G", "S" }));
assertEquals("error", check("A&B&D", new String[] { "C", "E" }));
}
private String check(String answer, String[] userAnswer) {
boolean isAllRight = true;// 用户给的答案是不是全对, 如果是, 比较个数
boolean hasOptionRight = false; // 用户给的答案有没有对的
for (String item : userAnswer) {
if (answer.contains(item.trim())) {
hasOptionRight = true;
} else {
if (isAllRight) {
isAllRight = false;
}
}
}
// 全对, 比较个数
if (isAllRight) {
if ((userAnswer.length * 2 - 1) == answer.length()) {
return "right";
} else {
return "partRight";
}
}
// 错误答案 , 是否有正确答案
if (hasOptionRight) {
return "partRightPartError";// 部分对, 部分错
} else {
return "error";
}
}
}
[/code]
ps;e文比较乱, 不会翻译, 哈哈!