我在Java中遇到了一个问题,无法找到求一个数组中所有整数的和的有用方法,Math
类中也没有这个方法。
我在Java中遇到了一个问题,无法找到求一个数组中所有整数的和的有用方法,Math
类中也没有这个方法。
看到以上回答都没有考虑使用线程池可以使程序运行速度快几倍,有点惊讶。在这里,parallel
使用了一个 fork-join 线程池,并自动将流分成多个部分并并行运行,然后合并结果。如果你记住以下代码,就可以在很多地方使用它。
因此,最快的简短代码奖得主是 -
int[] nums = {1,2,3};
int sum = Arrays.stream(nums).parallel().reduce(0, (a,b)-> a+b);
在我看来,在Arrays类中扩展一个求和函数似乎很合适,其中已经存在fill、sort、search、copy和equals等方法。在将Fortran移植到java时,查询现有的辅助方法之前是否需要自己编写也是一个公平的问题,因为在javadocs中有许多方便的方法。在巨大的javadoc索引中搜索“sum”、“add”或者任何你能想到的关键词。你可能会怀疑是否已经有人为基本类型int、float、double、Integer、Float、Double编写了这样的方法?无论多么简单,检查一下总是好的。保持代码尽可能简单,不要重复造轮子。
public static long sum(int[] i_arr)
{
long sum;
int i;
for(sum= 0, i= i_arr.length - 1; 0 <= i; sum+= i_arr[i--]);
return sum;
}
我个人喜欢这种方法。我的代码风格有点奇怪。
public static int sumOf(int... integers) {
int total = 0;
for (int i = 0; i < integers.length; total += integers[i++]);
return total;
}
在代码中使用起来非常简单:
int[] numbers = { 1, 2, 3, 4, 5 };
sumOf(1);
sumOf(1, 2, 3);
sumOf(numbers);
从这个练习中学到了两件事:
你需要以某种方式迭代数组的元素 - 可以使用for循环或while循环来实现。 你需要在一个累加器中存储求和的结果。为此,你需要创建一个变量。
int accumulator = 0;
for(int i = 0; i < myArray.length; i++) {
accumulator += myArray[i];
}
public void someMethod(){
List<Integer> numbers = new ArrayList<Integer>();
numbers.addAll(db.findNumbers());
...
System.out.println("Result is " + sumOfNumbers(numbers));
}
private int sumOfNumbers(List<Integer> numbers){
int sum = 0;
for (Integer i : numbers){
sum += i;
}
return sum;
}
你需要自己动手。
首先,你的总和是0。然后考虑数组中的每个整数,将其加入总和中。当你没有整数可加时,你就得到了这些整数的和。
如果没有整数,则总和为0。
static int sum()
{
int sum = 0; // initialize sum
int i;
// Iterate through all elements summing them up
for (i = 0; i < arr.length; i++)
sum += arr[i];
return sum;
}
import com.github.underscore.U;
public class Main {
public static void main(String[] args) {
int sum = U.sum(java.util.Arrays.asList(1, 2, 3, 4));
System.out.println(sum);
// -> 10
}
}
import org.apache.commons.math3.stat.StatUtils;
public class ArraySum {
public static void main(String[] args) {
double[] array = { 10, 4, 17, 33, -2, 14 };
int sum = (int)StatUtils.sum(array);
System.out.println("Sum of array elements is: " + sum);
}
}