C# 控制台应用程序 - 使用方法传递参数

C# Console Application - Using Methods to Pass Arguments

我有一份学校的申请作业,我一直在做,但一直坚持不下去。我不理解一些概念来完成我的程序。它很简单,我已经掌握了基本结构。有人可以帮助我理解和完成我的程序吗?以下是列出的信息:

以下是整体申请作业:

编写一个程序来显示一些数字的平均值。您的程序将包含三个用户定义的方法,分别名为 GetNums()、CalcAvg() 和 DspAvg()。在 GetNums() 中提示并从键盘读入 3 个实数。读取数字后,调用 CalcAvg() 将三个数字作为输入传递。 CalcAvg() 必须 RETURN(使用 return 语句)3 个数字的平均值。调用 CalcAvg() 后,调用 DspAvg() 显示平均值和输入的三个数字。您的程序不得包含任何具有 class 范围的变量(所有变量必须在方法内声明)。所有方法调用(GetNums()、CalcAvg() 和 DspAvg() 必须从 main() 调用)。使用正确的传球很重要。

您的输出应该与以下内容非常相似。

10.20、89.50、17.60的平均值为39.10。

将平均值四舍五入到小数点后两位。显示带两位小数的所有值。

GetNums() 将有三个参数,全部传递出去。 CalcAvg() 将有三个参数,全部通过副本传递。不要用四个! DspAvg() 将有四个参数,全部通过副本传递。

下面是我写的以下代码,但是根据上面的要求卡住了。

static void Main(string[] args)
        {
            int nu1, nu2, nu3, cavg;

            GetNums();
            CalcAvg();
            DspAvg();
        }

        static void GetNums()
        {
            Console.Write("Please enter nu1: ");
                nu1 = int.Parse(Console.ReadLine());

            Console.Write("Please enter nu2: ");
                nu2 = int.Parse(Console.ReadLine());

            Console.Write("Please enter nu3: ");
                nu3 = int.Parse(Console.ReadLine());

                CalcAvg(DspAvg);
        }

        static void CalcAvg()
        {

        }

        static void DspAvg()
        {

        }


    }
}

您不能在一种方法中声明变量并在另一种方法中使用它们。第二种方法不知道第一种方法中的变量。 正如规范所说,你需要你的 GetNums() 有 3 个参数通过 out

static void GetNums(out decimal num1, out decimal num2, out decimal num3)

从这里开始。如果您需要更多帮助,请告诉我:)

我在这里做了一些假设。但我已经为您提供了一个 "working" 应用供您考虑

static void Main(string[] args)
    {
        int nu1, nu2, nu3, cavg;

        GetNums(out nu1, out  nu2, out nu3);
        double average = CalcAvg(nu1, nu2, nu3);
        DspAvg(average);

    }

    static void GetNums(out int nu1, out int nu2, out int nu3)
    {
        Console.Write("Please enter nu1: ");
        nu1 = int.Parse(Console.ReadLine());

        Console.Write("Please enter nu2: ");
        nu2 = int.Parse(Console.ReadLine());

        Console.Write("Please enter nu3: ");
        nu3 = int.Parse(Console.ReadLine());


    }

    static double CalcAvg(int nu1, int nu2, int nu3)
    {
        return (nu1 + nu2 + nu3) / 3;
    }

    static void DspAvg(double average)
    {
        Console.WriteLine(Math.Round(average, 2));
    }

好吧,我们不会帮你做功课,但我可以给你一些建议。您的 Main 应该只调用 GetNums()。 GetNums() 应该调用 CalcAvg() 传递从控制台读取的数字而不是 DspAvg() 函数。最后将CalcAvg()的返回值传递给DspAvg(),将结果显示到控制台。

开始编写一些代码,如果您遇到错误,我们将能够为您提供更多帮助。

您没有按照作业中的说明使用参数。下面是一个在一个方法中使用 out 参数并将其发送到另一个方法并返回值的示例:

double parameter, result;
methodOne(out parameter);
result = methodTwo(parameter);

方法:

static void methodOne(out double x) {
  x = 42;
}

static double methodTwo(double x) {
  return x;
}

这应该让您开始了解如何修改您的方法。

我会提供一些建议,但这是一个很好的入门编程问题。我非常建议您尝试自己解决这个问题,因为它使用了您将来会用到的基本编程概念。

  1. 您的变量 nu1、nu2、nu3 和 cavg 应该是 double 值。 int 不能用于存储十进制值。 (注意:要得到小数点后两位的值,应该使用Math.Round方法)

    double nu1, nu2, nu3, cavg;
    
  2. 您似乎对如何将参数传递给方法感到困惑。例如,当您在 main 方法中调用 CalcAvg 方法时,您应该将从控制台读取的 3 个值传递给该方法。

    static void Main(string[] args){
        CalcAvg(nu1,nu2,nu3);
    }
    
    static void CalcAvg(double nu1, double nu2, double nu3){
    }
    

    通过这样做,您现在可以在 CalcAvg 方法中操作这些值。

  3. 最后,将值传递给方法并对其进行操作后,您将希望从该方法中 return 这些值。这可以通过 return 语句来完成。然后,您可以通过传入参数并将 returned 值存储在另一个变量中来调用此方法。

    static void Main(string[] args){
        double cavg;
        cavg = CalcAvg(nu1,nu2,nu3);
    }
    
    static double CalcAvg(double nu1, double nu2, double nu3){
        double cavg;
        return cavg;
    }
    

这三个原则应该可以帮助您完成这项作业。我强烈建议你自己做这个作业,不要从这个网站或任何其他网站上复制完整的答案。正确学习这些原则将帮助你在学术生涯的道路上走得更远。祝你好运:)