1

我是 C# 编程的新手,我有一个问题。我不知道将我的函数放在哪里以及如何声明它们以便我可以从我的 switch 语句中调用它们。我是否能够在我的函数中使用我的 numberarr 和 wordarr 数组,或者我是否还需要为它创建一个单独的函数这是我的代码:

class Program
{
    enum Menu
    {
        Numbers = 1,
        Words = 2,
        Exit = 3,
    }

    static void Main(string[] args)
    {
        bool isValid;
        do
        {
            isValid = true;
            Menu menu = 0;
            int number;
            string word;

            Console.WriteLine("Choose an option from the menu: ");
            Console.WriteLine("1. Numbers ");
            Console.WriteLine("2. Words ");
            Console.WriteLine("3. Exit ");

            switch (menu)
            {
                case Menu.Numbers:

                    List<int> numberarr = new List<int>();
                    Console.WriteLine("Please input as many numbers as you like or type exit");
                    number = int.Parse(Console.ReadLine());
                    numberarr.Add(number);



                    break;
                case Menu.Words:
                    List<string> wordarr = new List<string>();
                    Console.WriteLine("Please input as many numbers as you like");
                    word = Console.ReadLine();
                    wordarr.Add(word);

                    break;

                case Menu.Exit:

                    break;
                default:
                    Console.WriteLine("You have made an invalid selection, try again");
                    isValid = false;
                    break;
            }
        } while (isValid);

    }
}
class Choice
{
    static void Numbers(int sum, int count, int average, int max, int min)
    {

    }

    static void Words(string[] args)
    {

    }
    static void Exit()
    {

    }
}
4

3 回答 3

0

如果我理解您的问题,只需将您的功能放在您的班级中。我已经相应地调整了你的代码。您的 word/num 类也可能有问题。您通常必须实例化它们,但使用类似 Choice myChoice = new Choice(); 类程序 { enum Menu { Numbers = 1, Words = 2, Exit = 3, }

static void Main(string[] args)
{
    bool isValid;
    do
    {
        isValid = true;
        Menu menu = 0;
        int number;
        string word;

        Console.WriteLine("Choose an option from the menu: ");
        Console.WriteLine("1. Numbers ");
        Console.WriteLine("2. Words ");
        Console.WriteLine("3. Exit ");

        switch (menu)
        {
            case Menu.Numbers:

                List<int> numberarr = new List<int>();
                Console.WriteLine("Please input as many numbers as you like or type exit");
                number = int.Parse(Console.ReadLine());
                numberarr.Add(number);
                int retInt = functionGetInt(number) 


                break;
            case Menu.Words:
                List<string> wordarr = new List<string>();
                Console.WriteLine("Please input as many numbers as you like");
                word = Console.ReadLine();
                wordarr.Add(word);
                string retString = functionGetString(word);
                break;

            case Menu.Exit:

                break;
            default:
                Console.WriteLine("You have made an invalid selection, try again");
                isValid = false;
                break;
        }
    } while (isValid);
private string functionGetString(string pParmString)
{
//code
return "string";
}
private int functionGetInt(int pParmInt)
{

//code
return 0;
}

}

}

于 2013-07-20T23:46:36.450 回答
0

您不能使用ChoiceMain 类中定义的方法,因为您没有使用public标识符声明它们。在 C# 中,类属性默认为private如此,除非您明确声明它们,因为public只有类本身会知道它们的存在。

所以基本上只需更改Choicefrom static void MethodNameto中的所有声明public static void MethodName,然后您就可以在 mainChoice类中调用它们,例如;

   Choice.Exit();

编辑:您还需要进行一些更改以使 switch 语句起作用。正如评论中指出的那样,menu除了 0 之外没有其他值。我建议你使用更像下面的东西;

        isValid = true;
        int menu = 0;
        int number;
        string word;

        Console.WriteLine("What type do you want to use?");
        Console.WriteLine("Press 1 for numbers, 2 for words, or 3 exit.");
        string input = Console.ReadLine(); // we must read the users input

        if (!int.TryParse(input, out menu))
        {
             // the user didn't enter a number make them try again
             // note you might want to use a loop here to ensure the program does not
             // proceed until the user has entered "1", "2", or "3"
        }

        switch (menu)
于 2013-07-20T23:54:32.480 回答
0

编辑:

对于您在此处提供的代码,这将是一种可能性。我删除了枚举,我通常会尝试处理提供的代码,但是没有必要:

    class Program
    {
        //enum Menu
        //{
        //    Numbers = 1,
        //    Words = 2,
        //    Exit = 3,
        //}

        static void Main(string[] args)
        {
            bool isValid;
            do
            {
                isValid = true;
                int menu = 0;
                int[] number;
                string word;

                Console.WriteLine("Choose an option from the menu: ");
                Console.WriteLine("1. Numbers ");
                Console.WriteLine("2. Words ");
                Console.WriteLine("3. Exit ");

                string s = Console.ReadLine();
                while (!Regex.IsMatch(s, "^[1-3]{1}$"))
                {
                    Console.WriteLine("Please enter a valid choice(1 to 3)");
                    s = Console.ReadLine();
                }
                menu = Convert.ToInt32(s);
                switch (menu)
                {
                    case 1:
                        List<int> numberarr = new List<int>();
                        Console.WriteLine("Please input as many numbers as you like separeted by space or comma,or type exit");
                        string numbers = Console.ReadLine();
                        if (numbers == "exit")
                            Choice.Exit();
                        else
                        {
                            number = numbers.Split(new char[] { ',', ' ' }).Select(x => int.Parse(x)).ToArray();
                            numberarr.AddRange(number);
                            Choice.Numbers(numberarr.Sum(), numberarr.Count, numberarr.Average(), numberarr.Max(), numberarr.Min());
                        }

                        break;
                    case 2:
                        List<string> wordarr = new List<string>();
                        Console.WriteLine("Please input as many numbers as you like separeted by space or comma");
                        word = Console.ReadLine();
                        wordarr.AddRange(word.Split(new char[] { ',', ' ' }));
                        Choice.Words(wordarr);
                        break;
                    case 3:
                        Choice.Exit();
                        break;
                    default:
                        Console.WriteLine("You have made an invalid selection, try again");
                        isValid = false;
                        break;
                }
            } while (isValid);
            Console.ReadKey();
        }
    }

    class Choice
    {
        public static void Numbers(int sum, int count, double average, int max, int min)
        {
            int a = sum;
            int b = count;
            double c = average;
            int d = max;
            int e = min;
            //just as example.
        }

        public static void Words(List<string> args)
        {
            //do whatever you need here
        }
        public static void Exit()
        {
            Environment.Exit(0);
        }
    }
于 2013-07-21T00:03:54.043 回答