批改多项选择题问题.

被这个问题烦很久了.
希望大家能帮忙解答下.

数据库中答案那里是这样的.
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文比较乱, 不会翻译, 哈哈!

正确答案是固定的,用户提交的答案是多样的。可以将正确答案拆分成数组。对于多项选择题可以声明两个临时变量int cntright=0, int cnterror=0,用户的答案也拆分成数组,循环比较一下,把正确答案和错误答案记数。最后根据cntright,cnterror的值就可以判断答题情况,予以给分,判断下一道题前记得把cntright,cnterror清0