簡體   English   中英

如何返回 int 數組的總和和平均值?

[英]How can I return the sum and average of an int array?

我需要定義兩種方法來返回 int 數組的sumaverage 方法定義如下:-

public int Sum(params int[] customerssalary)
{
           
         // I tried the following but it fails   return customerssalary.sum();
}

另一個問題是,如何返回這些 int 值的平均值?

customerssalary.Average();
customerssalary.Sum();

這是您應該這樣做的方式,我之所以這么說是因為您顯然是 C# 新手,並且可能應該嘗試了解一些基本的東西是如何工作的!

public int Sum(params int[] customerssalary)
{
   int result = 0;

   for(int i = 0; i < customerssalary.Length; i++)
   {
      result += customerssalary[i];
   }

   return result;
}

使用此Sum函數,您也可以使用它來計算平均值...

public decimal Average(params int[] customerssalary)
{
   int sum = Sum(customerssalary);
   decimal result = (decimal)sum / customerssalary.Length;
   return result;
}

在第二個函數中使用decimal類型的原因是因為除法很容易返回非整數結果


其他人已經提供了一個 Linq 替代方案,無論如何我都會使用它,但是對於 Linq,無論如何擁有自己的函數是沒有意義的。 我假設你被要求實現這樣的功能作為一項任務來展示你對 C# 的理解,但我可能是錯的。

使用ints.sum()有兩個問題:

  • 該變量稱為customerssalary ,而不是ints
  • C# 區分大小寫 - 該方法稱為Sum() ,而不是sum()

此外,您還需要一個 using 指令

using System.Linq;

獲得總和后,您只需除以數組的長度即可獲得平均值 - 您不需要使用Average()它將再次遍歷數組。

int sum = customerssalary.Sum();
int average = sum / customerssalary.Length;

或作為double

double average = ((double) sum) / customerssalary.Length;

盡管以上所有答案都是不同的正確答案,但我想提供以下解決方案,其中包括空檢查:

decimal sum = (customerssalary == null) ? 0 : customerssalary.Sum();
decimal avg = (customerssalary == null) ? 0 : customerssalary.Average();

您嘗試了錯誤的變量, ints不是參數的正確名稱。

public int Sum(params int[] customerssalary)
{
    return customerssalary.Sum();
}

public double Avg(params int[] customerssalary)
{
    return customerssalary.Average();
}

但是你覺得這些方法真的有必要嗎?

如果您使用的是 Visual Studio 2005 那么

public void sumAverageElements(int[] arr)
{
     int size =arr.Length;
     int sum = 0;
     int average = 0;

     for (int i = 0; i < size; i++)
     {
          sum += arr[i];
     }

     average = sum / size; // sum divided by total elements in array

     Console.WriteLine("The Sum Of Array Elements Is : " + sum);
     Console.WriteLine("The Average Of Array Elements Is : " + average);
}

我參考了很多結果並修改了我的代碼使其正常工作

foreach (var rate in rateing)
                {
                    sum += Convert.ToInt32(rate.Rate);
                }
                if(rateing.Count()!= 0)
                {
                    float avg = (float)sum / (float)rateing.Count();
                    saloonusers.Rate = avg;
                }
                else
                {
                    saloonusers.Rate = (float)0.0;
                }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM