Подсчет элементов из текстового файла и возврат результатов из другого текстового файла - PullRequest
0 голосов
/ 17 апреля 2020
//Declare Class-level Array here
    private string[] Worldseries = new string[115];

    private void frmWorldseries_Load(object sender, EventArgs e)
    {
        //Form Load Method (Need to write this code)


        //REad the winners file and store each record in an array
        StreamReader InputWinners;

        InputWinners = File.OpenText("Worldseries.txt");
        //Loop to read each record and store in Array
        int subscript = 0;
        while (!InputWinners.EndOfStream)
        {
            //Read a record and store record in array
            Worldseries[subscript] = InputWinners.ReadLine();
            //Increment subscript
            subscript++;
        }

        //Read the teams names file and store each record in a list box
        StreamReader InputTeams;

        InputTeams = File.OpenText("Teams.txt");
        //Loop to read each record and add to listbox
        while (!InputTeams.EndOfStream)
        {
            listTeams.Items.Add(InputTeams.ReadLine());
        }

        //Close both files
        InputWinners.Close();
        InputTeams.Close();
    }

    private void btnCountWins_Click(object sender, EventArgs e)
    {

    }

У меня проблема с написанием кода для подсчета количества побед. Мне нужно перепроверить, чтобы убедиться, что команда выбрана. Если имя команды не было выбрано в ListBox, отобразите сообщение об ошибке и вернитесь. Мне нужен оператор if, чтобы проверить это.

Мне также нужно настроить al oop, который будет l oop через каждую запись в массиве WorldSeriesWinners. Для каждой записи в массиве, если имя соответствует имени, выбранному пользователем, добавьте 1 к счетчику. После завершения l oop отобразите количество побед.

Я новичок в написании кода и буду очень признателен, если кто-нибудь сможет мне помочь с этим.

1 Ответ

0 голосов
/ 17 апреля 2020

Я бы сделал это немного по-другому. Я бы создал словарь вместо массива:

Dictionary<string, int> worldSeries = new Dictionary<string, int>();

private void frmWorldseries_Load(object sender, EventArgs e)
{
    var readText = File.ReadAllLines(path);
    foreach (string s in readText)
    {
        if (worldSeries.ContainsKey(s)) 
        {
            worldSeries[s]++;
        }
        else 
        {
            worldSeries.Add(s, 1);
        }
    }
}

Теперь в событии кнопки:

if (listTeams.SelectedIndex == -1) {
    MessageBox.Show("Please select team");
}
else 
{
    MessageBox.Show($"Your team won {worldSeries[listTeams.SelectedText].ToString()} times");
}

Делая так, вы только зацикливаетесь на своем списке, следовательно, обеспечивая лучшее производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...