Member 14196600 Ответов: 1

Проблема с C# и передачей методов в массивы


Я беру введение в программирование, которое так ново для него. Я изучаю C# и пишу программу, которая использует массивы и методы, и у меня есть проблема.
Предполагается, что программа запрашивает меню, которое создает нового пользователя, а затем запрашивает номер(продажи), удаляет пользователя, очищает массив, перечисляет пользователя. Существует также ставка комиссии, которая при вводе определенного числа (продажи) умножается на процент и отображает это число как комиссию. В списке он также должен объединить все продажи в Объединенное число, а также комиссию рядом с ним. Вот что у меня есть до сих пор. У меня возникли проблемы с передачей метода массива, как видно в ближайшем нижнем углу.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CPSC1012_CP3_FarkasdiJonah
{
    class Program
    {
        static void Main(string[] args)
        {
            double placeholder1 = 0, placeholder2 = 0;
            char menuchoice;
            const int max_salepersons = 11;
            int salespersons = 0;
            string[] salespersonsName = new string[max_salepersons];
            double[] sales = new double[max_salepersons];
            double[] salepersonsCom = new double[max_salepersons];

            do
            {
                Console.WriteLine("Sales Commissions Calculator - Main Menu\n");

                Console.WriteLine("Select an option:" +
                    "\n        1 - Add Sales" +
                    "\n        2 - Remove Sales" +
                    "\n        3 - Clear Data" +
                    "\n        4 - Display Sales and Commissions" +
                    "\n        5 - Exit");

                Console.Write("Option: ");
                menuchoice = char.Parse(Console.ReadLine());

                switch (menuchoice)
                {
                    case '1':
                        {
                            if (salespersons < max_salepersons)
                            {
                                salespersonsName[salespersons] = GetValidName("Enter 
                                the player name: ");
                                if 
                              
    (salespersonsName[salespersons].Equals(salespersonsName))
                                {
                                    Console.WriteLine("That name is already registered");
                                }
                                else
                                {
                                    sales[salespersons] = GetSafeDecimal("Enter their sales: ");
                                    Console.WriteLine("PlayerName: {0}, PlayerNumber: {1} was added",
                                    salespersonsName[salespersons], sales[salespersons]);
                                    salespersons++;
                                }
                            }
                            else
                            {
                                Console.WriteLine("The list is full");
                            }

                            Console.Clear();

                            break;
                        }
                    case '2':
                        {

                            Console.Clear();
                            break;
                        }

                    case '3':
                        {

                            Console.Clear();
                            break;
                        }

                    case '4':
                        {
                            Console.WriteLine("------------------- Sales & Commissions Data -------------------\n");
                            Console.WriteLine("Sales Person                           Sales  Commission");
                            Console.WriteLine("----------------------------------------------------------------");

                            DisplayData(salespersonsName, sales, salepersonsCom, ref salespersons);

                            Console.WriteLine("----------------------------------------------------------------");
                            Console.WriteLine("{0,30}{1,14:c}{2,12:c}", "Totals:", placeholder1, placeholder2);

                            Console.Write("");
                            ConsoleKeyInfo key = Console.ReadKey();

                            if (key.Key.Equals(ConsoleKey.Enter))
                            {
                                Console.Clear();
                            }
                            else
                            {
                                Console.Clear();
                            }

                            break;
                        }

                    case '5':
                        {
                            Console.WriteLine("\nThanks for using the Sales Commissions Calculator  ... come again soon");

                            Console.Write("");
                            ConsoleKeyInfo key = Console.ReadKey();

                            Environment.Exit(0);
                            break;
                        }
                }

            }
            while (menuchoice != 5);

            Console.ReadLine();
        }

        static string GetValidName(string prompt)
        {
            string validname;

            Console.WriteLine(prompt);
            validname = Console.ReadLine();

            while (string.IsNullOrEmpty(validname))
            {
                Console.WriteLine("ERROR: Please enter a valid name", prompt);
                validname = Console.ReadLine();
            }

            return validname;
        }

        static double GetSafeDecimal(string prompt)
        {
            string checkifsafedecimal;
            double validdecimal;

            Console.WriteLine(prompt);
            checkifsafedecimal = Console.ReadLine();

            while (!double.TryParse(checkifsafedecimal, out validdecimal) || validdecimal < 0)
            {
                Console.WriteLine("ERROR: Please enter a valid sales number {0}", prompt);
                checkifsafedecimal = Console.ReadLine();
            }

            return validdecimal;
        }

        static double CalculateCommission(double sales, ref int salespersons, double[] salepersonsCom)
        {
            if (sales > 200000)
            {
                salepersonsCom[salespersons] = 0.07;
            }
            else if(sales > 125000)
            {
                salepersonsCom[salespersons] = 0.06;
            }
            else if(sales > 50000)
            {
                salepersonsCom[salespersons] = 0.05;
            }
            else if(sales < 50000)
            {
                salepersonsCom[salespersons] = 0.04;
            }
            else if(sales == 0)
            {
                salepersonsCom[salespersons] = 0;
            }

            salepersonsCom[salespersons] = (salepersonsCom[salespersons] * sales);

            return salepersonsCom[salespersons];
        }

        //static double CalculateTotalSales(params…)
        //{

        //}

        //static double CalculateTotalCommissions(params…)
        //{

        //}

        static void DisplayData(string[] salespersonsName, double[] sales, double[] salepersonsCom, ref int salespersons)
        {
            Console.Clear();
            if (salespersons > 0)
            {
                for (int index = 0; index < salespersons; index++)
                {
                    Console.WriteLine("------------------- Sales & Commissions Data -------------------\n");
                    Console.WriteLine("Sales Person                           Sales  Commission");
                    Console.WriteLine("----------------------------------------------------------------");
                    Console.WriteLine("{0,0}{1,14:c}{2,12:c}", salespersonsName[index], sales[index], 
                    CalculateCommission(salepersonsCom[salespersons])[index]);
                    Console.WriteLine("----------------------------------------------------------------");
                    Console.WriteLine("{0,30}", "Totals:");
                }
            }
            else
            {
                Console.WriteLine("------------------- Sales & Commissions Data -------------------\n");
                Console.WriteLine("Sales Person                           Sales  Commission");
                Console.WriteLine("----------------------------------------------------------------");
            }
        }
    }
}


Что я уже пробовал:

угадывание, видео на youtube, веб-сайты

David_Wimbley

Вы должны конкретно указать, где находится ваша проблема и каков ваш ожидаемый результат. Прямо сейчас вы просите людей угадать, где находится ваша проблема и какой вы ожидаете результат.

Gerry Schmitz

Вам не нужно печатать все эти "-" и пробелы. Вы можете "прокладывать влево / вправо" с определенным символом до определенной длины; например

"".PadRight( 40, '-' );
"Продажи".Навесной руль( 30 );

1 Ответов

Рейтинг:
2

OriginalGriff

Посмотрите на свои сообщения об ошибках в области ошибок. Двойной щелчок по сообщению приведет вас к строке, к которой оно относится. Они довольно хорошо описывают проблему!

"Newline in constant"
salespersonsName[salespersons] = GetValidName("Enter
the player name: ");
Строки не могут пересекать линии, если они не имеют префикса"@". Удалить новую строку:
salespersonsName[salespersons] = GetValidName("Enter the player name: ");
И проблема исчезает.

Исправьте это, и вы получите еще одну ошибку:
No overload for method 'CalculateCommission' takes 1 arguments
CalculateCommission(salepersonsCom[salespersons])[index]);
Посмотрите на сам метод:
static double CalculateCommission(double sales, ref int salespersons, double[] salepersonsCom)
{
...
}
Для этого нужны три параметра.
Поставьте параметры!