Windows应用程序问题的数组总和

时间:2011-04-19 20:51:25

标签: c# .net arrays sum

给定一个用数字初始化的数组,如何在不使用LINQ或foreach的情况下添加所有元素?

我的不完整代码如下:

namespace WindowsApplication5
{
   public partial class Form1 : Form
   {
      public Form1()
      {
         InitializeComponent();
      }

      public void Form1_Load(object sender, EventArgs e)
      {
         method1(sum1);
         MessageBox.Show("The Sum Is = " + sum1.ToString(), "Addition",MessageBoxButtons.OK,MessageB…
      }
      int sum1;
      int[] str = new int[4] { 1, 2, 3, 4 }; // i want to add this 4 values and to be printed on a messagebox//

      public int method1(int str)
      {
          sum1 = str;
          return sum1;
      }
   }
}

输出显示“sum is = 0”,而不是10。

谢谢。

P.S:我不想使用LINQ或foreach

4 个答案:

答案 0 :(得分:3)

首先,你有全局变量是坏的。如上所述,请不要使用LINQForeach,请尝试以下内容:

//Doesn't have to be a button click...just an example.
private void button1_Click(object sender, EventArgs e)
{
   int[] values = new int[4] { 1, 2, 3, 4 };
   int result = Sum(values);
   MessageBox.Show(result.ToString());
}

int Sum(int[] values)
{
   int sum= 0;
   for (int i = 0; i < values.Length; ++i)
   {
       sum += values[i];
   }
   return sum;
}

答案 1 :(得分:2)

不使用foreachLINQ的最简单选项是使用for循环或递归。 递归解决方案:

int Sum(int[] arr, int index = 0, int current = 0)
{
  if(index == arr.Length)
    return current;
  return Sum(arr, index+1, current+arr[index]);
}

使用for循环:

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

答案 2 :(得分:1)

要获取数组的总和,您只需说:int sum = myArray.Sum();

为此,你需要:using System.Linq,因为那是定义Sum扩展方法的地方。

如果你没有linq,那么怎么样:

private int CalculateSum(int[] arr){
   int total = 0;
   foreach(int i in arr)
      total += i;
   return total;
}

答案 3 :(得分:1)

我很好奇为什么你反对for循环。你能开导我们吗?

除非我遗漏了某些内容,否则您似乎有两个选择:
1)使用现有方法(在这种情况下,它将是.Sum()方法,在LINQ),或者2)自己编写一个方法来计算总和(即foreach循环)