比如我有一个是多选题的答案,答案是a,b,c现在用户通过winfrom选择答案,
我怎么判断用户的选择与正确答案是相同的?

解决方案 »

  1.   

    两者相 与 结果为 true  则相同
      

  2.   

    public void Test()
    {
        Choice[] answer01_1 = new Choice[] { Choice.A, Choice.B, Choice.C };
        Choice[] answer01_2 = new Choice[] { Choice.A, Choice.B, Choice.C, Choice.D };
        Choice[] true_answer01 = new Choice[] { Choice.A, Choice.B, Choice.C };
        Console.WriteLine(true_answer01.Intersect(answer01_1).Count() == answer01_1.Length);
        Console.WriteLine(true_answer01.Intersect(answer01_2).Count() == answer01_2.Length);    //如果你用位操作,就更简单了。
        Choice answer1_1 = Choice.A | Choice.B | Choice.C;
        Choice answer1_2 = Choice.A | Choice.B | Choice.C| Choice.D;
        Choice answer1_3 = Choice.A | Choice.C ;
        Choice true_answer1 = Choice.A | Choice.B | Choice.C;
        Console.WriteLine(answer1_1 == true_answer1);
        Console.WriteLine(answer1_2 == true_answer1);
        Console.WriteLine(answer1_3 == true_answer1);
    }public enum Choice { A = 1, B = 2, C = 4, D = 8 }
      

  3.   

    稍微修改一下public void Test()
    {
        Choice[] answer01_1 = new Choice[] { Choice.A, Choice.B, Choice.C };
        Choice[] answer01_2 = new Choice[] { Choice.A, Choice.B, Choice.C, Choice.D };
        Choice[] answer01_3 = new Choice[] { Choice.A, Choice.B };
        Choice[] true_answer01 = new Choice[] { Choice.A, Choice.B, Choice.C };
        //以下修改
        Console.WriteLine(true_answer01.Intersect(answer01_1).Count() == answer01_1.Length && answer01_1.Length== true_answer01.Length);
        Console.WriteLine(true_answer01.Intersect(answer01_2).Count() == answer01_2.Length && answer01_2.Length == true_answer01.Length);
        Console.WriteLine(true_answer01.Intersect(answer01_3).Count() == answer01_3.Length && answer01_3.Length == true_answer01.Length);    //如果你用位操作,就更简单了。
        Choice answer1_1 = Choice.A | Choice.B | Choice.C;
        Choice answer1_2 = Choice.A | Choice.B | Choice.C | Choice.D;
        Choice answer1_3 = Choice.A | Choice.C;
        Choice true_answer1 = Choice.A | Choice.B | Choice.C;
        Console.WriteLine(answer1_1 == true_answer1);
        Console.WriteLine(answer1_2 == true_answer1);
        Console.WriteLine(answer1_3 == true_answer1);
    }
      

  4.   

    数组相同值
    List<string> lst1 = new List<string>(){"A"};
    List<string> lst2= new List<string>() { "B"}
    lstNew = lst1.Intersect(lst2, StringComparer.OrdinalIgnoreCase);
      
      

  5.   

    把答案写成字符串来判断
    //判读多选题答案正确性 answer:用户答案  correct正确答案
            public static bool bolAnswer(string answer, string correct)
            {
    //把字符串转换成数组
                char[] chrAnswer = answer.ToCharArray();
                char[] chrCorrect = correct.ToCharArray();
    //判断用户数据是否为空
                if(answer.Length<1)
                {
                    return false;
                }
    //判读用户答案长度是否与正确答案长度一致
                else if (!answer.Length.Equals(correct.Length))
                {
                    return false;
                }
                else
                {
                    for (int i = 0; i < answer.Length; i++)
                    {
                        for (int j = 0; j < correct.Length; j++)
                        {
                            int n = 1;
                            if (chrAnswer[i] == chrCorrect[j])
                            {
                                break;
                            }
                            else
                            {
                                n++;
                            }
                            if (n > correct.Length)
                            {
                                return false;
                            }
                        }
                    }
                    return true;
                }
            }