【问题标题】:Breaking 1 method to create 2 [closed]打破1创建2的方法[关闭]
【发布时间】:2020-09-12 12:26:56
【问题描述】:

破1法造2

有没有办法把这段代码分成两种方法? 一种方法应命名为 GetInput(),另一种方法应命名为 CalculateAve()

static void GetInput()
        {
            //declare a counter variable
            int count = 0;
            string inValue = "";
            int sum = 0, intValue;

            while (inValue != "DONE")
            {
                if (int.TryParse(inValue, out intValue) == false)
                {
                    count--;
                    Console.WriteLine("type DONE to STOP entering scores:");
                }

                sum = sum + intValue;

                Console.Write("Enter DONE to exit:  ");
                inValue = Console.ReadLine();
                count++;    // increase the counter to keep track of the number of inputs
            }

            int average = (int)sum / count;    //calculate the average

         
            Console.WriteLine("                      Grade Result");
            Console.WriteLine("Average: {0}", average);    //print the average
        
static void Main(string[] args)
        {
       

        //Getting Input value and Calculate the Average
       GetInput();

【问题讨论】:

  • 到目前为止你尝试过什么?你被困在哪里了?

标签: c# average user-defined-functions


【解决方案1】:
static void GetInput()
{
    List<int> values = new List<int>();
    int intValue;

    while (true)
    {
        var test = Console.ReadLine();
        if (int.TryParse(test, out intValue))
        {
           
        }
        else if(test.ToUpper()=="DONE")
        {
            break;
        }
        else
        {
            Console.WriteLine("type DONE to STOP entering scores:");
        }
    }

    double average = GetAverage(values);

    Console.WriteLine("                      Grade Result");
    Console.WriteLine("Average: {0}", average);    //print the average
}

static double GetAverage(List<int> values)
{
    return (double)values.Sum() / (double)values.Count();
}

static void Main(string[] args)
{
    //Getting Input value and Calculate the Average
    GetInput();
}

【讨论】:

    【解决方案2】:

    这似乎是一个非常家庭作业的问题,所以我不知道答案的水平是否合适。 但是你不应该真正自己计算任何东西的平均值,因为 C# 已经为此内置了函数。

    我会这样做:

    static IEnumerable<int> GetScoresFromConsole()
    {
        while (true)
        {
            var input = Console.ReadLine();
            if (input.ToUpper() == "DONE")
                break;
            if (int.TryParse(input, out var i))
                yield return i;
            else
                Console.WriteLine("type DONE to STOP entering scores:");
        }
    }
    
    public static void Main()
    {
        var scores = GetScoresFromConsole();
        Console.WriteLine($"Average: {scores.Average()}");
    }
    

    【讨论】:

      猜你喜欢
      • 2014-08-07
      • 2012-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-06
      • 1970-01-01
      • 2012-01-15
      相关资源
      最近更新 更多