C#问题并将方法传递给数组 [英] Issue with C# and passing methods to arrays

查看:71
本文介绍了C#问题并将方法传递给数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在编写一个非常新的编程介绍。我正在学习C#并编写一个利用数组和方法的程序,我遇到了问题。

该程序应该提示一个菜单,创建一个新用户然后请求一个号码(销售),删除一个用户,清除数组,列出用户。还有佣金率,当输入特定数字(销售额)时,它会按百分比计算,并将该数字显示为佣金。在列表中,它还将所有销售汇总成一个组合数字以及旁边的佣金。这是迄今为止我所拥有的。我在接近底部看到的传递一个数组方法时遇到了麻烦。



I am taking an intro to programming so very new to it. I am learning C# and writing a program that utilizes arrays and methods and I am having an issue with.
The program is supposed to prompt a menu that, creates a new user and then asks for a number(sales), delete a user, clears the array, lists the user. Theres also a commission rate that when a specific number is entered (sales) it times by a percentage and displays that number as commission. In the list it is also to compile all sales into a combined number as well as commission beside it. Heres what i have so far. I am having troubles passing a method an array as seen in the near bottom.

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("----------------------------------------------------------------");
            }
        }
    }
}





我尝试了什么:



guesstimating,youtube视频,网站



What I have tried:

guesstimating, youtube videos, websites

推荐答案

查看您的错误消息错误窗格。双击消息会将您带到它所关注的行。他们很好地描述了这个问题!



Look at your error messages in the Error Pane. Double clicking on a message takes you to the line that it concerns. They describe the problem pretty well!

"Newline in constant"

salespersonsName[salespersons] = GetValidName("Enter
the player name: ");

除非前缀为'@',否则字符串不能跨行。删除换行符:

Strings can't cross lines unless they are prefixed with '@'. Remove the newline:

salespersonsName[salespersons] = GetValidName("Enter the player name: ");

问题就消失了。



解决这个问题,然后又出现了另一个错误:

And the problem goes away.

Fix that, and you get another error:

No overload for method 'CalculateCommission' takes 1 arguments

CalculateCommission(salepersonsCom[salespersons])[index]);

查看方法本身:

static double CalculateCommission(double sales, ref int salespersons, double[] salepersonsCom)
{
...
}

这需要三个参数。

提供参数!

That needs three parameters.
Supply the parameters!


这篇关于C#问题并将方法传递给数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆