-1

私は2つの配列を持っています。配列testAnswerは「試験への回答」を保持し、配列inputAnswersは「試験への学生の回答」を保持します。

正解と不正解を表示しようとしています。言い換えれば、inputAnswers にない testAnswer の値 (不正解) と、両方の配列に共通する値 (正解) を表示しようとしています。

このために、linq を使用して .Except および .Intersect メソッドを使用しました。しかし、私はこの奇妙な出力を得ています:

B, D, A, C

誰でも私を助けてください。

私のコード:

private void button1_Click(object sender, EventArgs e)
  {
      string[] testAnswer = new string[20] { "B", "D", "A", "A", "C", "A", "B", 
           "A", "C", "D", "B", "C", "D", "A", "D", "C", "C", "B", "D", "A" };
      string a = String.Join(", ", testAnswer);

     // Reads text file line by line. Stores in array, each line of the 
     // file is an element in the array
      string[] inputAnswer = System.IO.File
              .ReadAllLines(@"C:\Users\Momo\Desktop\UNI\Software tech\test.txt");
      string b = String.Join(", ", inputAnswer);

      var inter = inputAnswer.Intersect(testAnswer);
      foreach (var s in inter)
       {
          listBox1.Items.Add(s);
        }
     }   
4

1 に答える 1

3

Intersect交差を設定するため、重複する値を破棄します。回答を比較したい場合は、配列を並行して処理することをお勧めします。

for(int i=0; i<testAnswer.Length; i++) {
    if(testAnswer[i] == inputAnswer[i])
        listBox1.Items.Add(inputAnswer[i]); // or testAnswer[i], as appropriate
}
于 2012-08-27T05:45:36.770 に答える