Я создаю приложение C# GUI, и у меня возникают проблемы с моим циклом, приложение получает .txt-файл со студенческими экзаменами на экзамен ответы A, B, C или D от каждого на септической линии и затем он сравнивает его с правильными ответами в массиве в коде. Моя петля всегда дает мне, что все ответы неверны, независимо от правильности ответов или неправильных ответов.Loop issue in C# Сравнение двух массивов
Мой интерфейс
Мой код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace Mohammad_Saad_Assignment_1_Part_2_Sec_B
{
public partial class Form1 : Form
{
//Acutal answers
string[] correctAnswers = { "B", "D", "A", "A", "C", "A", "B", "A", "C", "D", "B",
"C", "D", "A", "D", "C", "C", "B", "D", "A" };
//Student answers array of size 20
string[] studentAnswers = new string[20];
public Form1()
{
InitializeComponent();
}
private void btnOpen_Click(object sender, EventArgs e)
{
listBox2.Items.AddRange(correctAnswers);
//Opening a new file.
OpenFileDialog open = new OpenFileDialog();
//Dismiss user cancelation so application dosnt crash.
if (open.ShowDialog() == DialogResult.OK)
{
path.Text = open.FileName;
}
StreamReader sReader = new StreamReader(open.FileName);
int index = 0;
while (index < correctAnswers.Length && !sReader.EndOfStream)
{
correctAnswers[index] = sReader.ReadLine();
index++;
}
foreach (string str in correctAnswers)
{
listBox1.Items.Add(str);
}
btnOpen.Enabled = false;
}
private void button1_Click(object sender, EventArgs e)
{
int i = 0;
int questionNumber = 1;
int answersCorrect = 0;
int answersIncorrect = 0;
do
{
if (studentAnswers[i] == correctAnswers[i])
{
answersCorrect++;
}
if (studentAnswers[i] != correctAnswers[i])
{
listBox3.Items.Add("Question " + questionNumber);
listBox3.Items.Add("Incorrect");
answersIncorrect++;
}
i++;
questionNumber++;
}
while (i != 20);
lblCorrect.Text = answersCorrect.ToString();
lblInCorrect.Text = answersIncorrect.ToString();
if (answersCorrect >= 15)
{
txtResults.Text = "PASS";
}
if (answersCorrect < 15)
{
txtResults.Text = "FAIL";
}
btnMark.Enabled = false;
}
private void btnClear_Click(object sender, EventArgs e)
{
btnOpen.Enabled = true;
btnMark.Enabled = true;
listBox1.Items.Clear();
listBox3.Items.Clear();
txtResults.Clear();
}
}
}
Вопрос, я думаю, в кнопке Mark (кнопка 1) Любая помощь очень ценится.
Что такое символ в вашем файле? Являются ли они UpperCase «A, B, C ...» или LowerCase «a, b, c»? – Alireza
Привет Alireza, я также использую верхний регистр, спасибо – user2318228