возникли проблемы с удалением данных из массивов

#c# #arrays #methods

#c# #массивы #методы

Вопрос:

у меня возникли проблемы с поиском в массиве «имя торгового представителя», а затем с удалением имени, продажи и комиссии.

 static void RemoveSale(string[] sellerNames, double[] sellerSales, double[] sellerCommision, ref int sellerCount)
    {
        int index;
        string salesRep;
        try
        {
            if (sellerCount > 0)
            {
                salesRep = GetValidName("Enter the sales rep to delete");
                index = SearchSeller(sellerNames, sellerCount);
                if (index == -1)
                {
                    Console.WriteLine("that sales rep is not on the team");
                }
                else
                {
                    sellerSales[index] = sellerSales[sellerCount - 1];
                    sellerNames[index] = sellerNames[sellerCount - 1];
                    sellerCommision[index] = sellerCommision[sellerCount - 1];
                    Console.WriteLine("Sales rep {0} has been deleted.", sellerNames);
                    sellerCount--;
                }
            }
            else
            {
                Console.WriteLine("there are no sales reps to delete");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            Console.ReadLine();
        }
    }


    static int SearchSeller(string[] sellerNames, int sellerCount)
    {
        try
        {
            int index = 0;
            bool found = false;
                            while (!found amp;amp; index < sellerCount)
            {
                if (sellerNames[sellerCount] == sellerNames[index])
                    found = true;
                else
                    index  ;
            }
            if (!found)
                index = -1;
            return index;
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            Console.ReadLine();
        return 0;
        }

    }
  

ожидаемый результат — удалить name, data и подтвердить, что sellerName{0} был удален.

фактический результат — ничего не удалено, и нет подтверждения удаленного продавца

Ответ №1:

Вы не передаете свой salesRep объект функции поиска. Предполагая, что вы можете изменить сигнатуру функции поиска, попробуйте это:

 // Pass the name of the sales rep
static int SearchSeller(string[] sellerNames, int sellerCount, string salesRep)
    {
        try
        {
            int index = 0;
            bool found = false;
                            while (!found amp;amp; index < sellerCount)
            {
                // compare the current name in array with the passed name
                if (salesRep == sellerNames[index])
                    found = true;
                else
                    index  ;
            }
            if (!found)
                index = -1;
            return index;
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            Console.ReadLine();
        return 0;
        }
  

Отладка обычно должна быть первым шагом для проверки на более простых ошибках.

Лучшим вариантом поиска было бы использовать функцию c # Find

 Array.Find(sellerNames, salesRep);
  

Комментарии:

1. это было именно так! Спасибо. Я дошел до последних нескольких проверок на ошибки перед назначением. вы спасли свою жизнь!! К сожалению, учитель не разрешает нам использовать find, sort или list