如何在Java中计算数组中所有数字的总和?

194

我在Java中遇到了一个问题,无法找到求一个数组中所有整数的和的有用方法,Math类中也没有这个方法。


18
编写自己的代码,它只需2-3行即可完成。 - wkl
2
不幸的是,上述(以及以下)的“答案”都是“Java方式” :-/ 您可以使用Functional Java库,但处理Java语法非常繁琐。 - user166390
2
我知道这个问题非常古老,但下面的msayag的答案似乎应该被标记为被接受的答案。 - Matsu Q.
编写自己的代码的问题在于它是一个循环。当你对3个数字求和时,应该能够在一条指令中完成。 - Al G Johnston
29个回答

0

这里大部分的答案都是使用内置函数。
如果您想了解这个问题背后的整个逻辑,这是我的答案:

import java.util.*;

public class SumOfArray {
    public static void main(String[] args){
        Scanner inp = new Scanner(System.in);
        int n = inp.nextInt();
        int[] arr = new int[n];
        for(int i = 0; i < n; i++){
            arr[i] = inp.nextInt();
        }
        System.out.println("The sum of the array is :" + sum(arr));
    }
    static int sum(int[] arr){
        int sum = 0;
        for (int a = 0; a < arr.length; a++){
            sum = sum + arr[a];
        }
        return sum;
    }
}

0
class Addition {

     public static void main() {
          int arr[]={5,10,15,20,25,30};         //Declaration and Initialization of an Array
          int sum=0;                            //To find the sum of array elements
          for(int i:arr) {
              sum += i;
          }
          System.out.println("The sum is :"+sum);//To display the sum 
     }
} 

现有答案的副本。 - james.garriss

0
/**
 * Sum of all elements from 1 to 1000
 */
final int sum = Stream.iterate(1, n -> n + 1).limit(1000).mapToInt(el -> el).sum();

0

数学类中没有“方法”可以做这样的事情。这不像是一个平方根函数或类似的东西。

你只需要为总和设置一个变量,然后循环遍历数组,将找到的每个值添加到总和中即可。


0

我们可以使用用户定义的函数。首先将sum变量初始化为零。然后遍历数组并将元素与sum相加。然后更新sum变量。

代码片段:

import java.util.*;   
import java.lang.*;  
import java.io.*;


class Sum
{
    public static int sum(int arr[])
    {
        int sum=0;

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

    public static void main (String[] args)
    {
          int arr[] = {1, 2, 3, 4, 5};

          int total = sum(arr);

          System.out.printf("%d", total);
    }
}

0

找到数组元素之和的算法:

  1. 初始化一个数组 arr 和一个变量 sum
  2. sum 的值设为 0
  3. 从索引 0 开始一个 for 循环,循环次数为数组长度减一;
  4. 在每次迭代中,执行 sum=sum+arr[i]
  5. 循环结束后,打印出 sum 的值。

请参考下面的代码:

import java.io*;
import java.util*;
import java.text*;
import java.math*;
import java.util.regex*;

class Test{
static int arr[] = {1,2,3,4,10,11}
//method for sum of elements in an array
static int sum()
{
int sum = 0; //initialize sum
int i;

//iterate through all elements and add them to sum
for (i=0; i<arr.length;i++)
    sum += arr[i];

 return sum;
}

//driver method
public static void main(String[] args){
System.out.println("Sum of given array is " + sum());
}


}

如果你想要得到一个数组元素的总和,而初始输入(stdln)是未知的,只需添加以下内容:
Scanner input = new Scanner(System.in);
int length = input.nextInt();

-1
public class AddDemo {

    public static void main(String[] args) {

        ArrayList <Integer>A = new ArrayList<Integer>();

        Scanner S = new Scanner(System.in);

        System.out.println("Enter the Numbers: ");

        for(int i=0; i<5; i++){

            A.add(S.nextInt());
        }

        System.out.println("You have entered: "+A);

        int Sum = 0;

        for(int i=0; i<A.size(); i++){

            Sum = Sum + A.get(i);

        }

        System.out.println("The Sum of Entered List is: "+Sum);

    }

}

-1
 public class Num1
 {
     public static void main ()
     {
          //Declaration and Initialization
          int a[]={10,20,30,40,50}

          //To find the sum of array elements
          int sum=0;
          for(int i=0;i<a.length;i++)
          {
              sum=sum+i;
          }

          //To display the sum
          System.out.println("The sum is :"+sum);

     }
  } 

1
老兄,这个程序段是“sum=sum+a[i];”。 - Yaroslav Dukal

-3

从Java 8开始,Lambda表达式的使用已经变得可用。

请参见:

int[] nums = /** Your Array **/;

紧凑:

int sum = 0;
Arrays.asList(nums).stream().forEach(each -> {
    sum += each;
});

偏好:

int sum = 0;

ArrayList<Integer> list = new ArrayList<Integer>();

for (int each : nums) { //refer back to original array
     list.add(each); //there are faster operations…
}

list.stream().forEach(each -> {
    sum += each;
});

返回或打印总和。


1
有效代码:int[] nums = {1,2}; final int[] sum = {0}; ArrayList list = new ArrayList(); for (int each : nums) { list.add(each); } list.stream().forEach(each -> { sum[0] += each; }); - Zhurov Konstantin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接