У меня возникла проблема с поиском суммы всех целых чисел в массиве в Java. Я не могу найти полезный метод в классе Math
для этого.
Как вы находите сумму всех чисел в массиве в Java?
Ответ 1
В java-8 вы можете использовать потоки:
int[] a = {10,20,30,40,50};
int sum = IntStream.of(a).sum();
System.out.println("The sum is " + sum);
Выход:
Сумма 150.
Это в упаковке java.util.stream
import java.util.stream.*;
Ответ 2
Если вы используете Java 8, класс Arrays
предоставляет метод stream(int[] array)
, который возвращает последовательный IntStream
с указанным int
массив. Он также был перегружен для массивов double
и long
.
int [] arr = {1,2,3,4};
int sum = Arrays.stream(arr).sum(); //prints 10
Он также предоставляет метод
stream(int[] array, int startInclusive, int endExclusive)
, который позволяет вам взять указанный диапазон массива (что может быть полезно):
int sum = Arrays.stream(new int []{1,2,3,4}, 0, 2).sum(); //prints 3
Наконец, он может принимать массив типа T
. Таким образом, вы можете, например, иметь String
, который содержит числа в качестве входных данных, и если вы хотите их суммировать, просто сделайте:
int sum = Arrays.stream("1 2 3 4".split("\\s+")).mapToInt(Integer::parseInt).sum();
Ответ 3
Это одна из тех простых вещей, которая не существует (AFAIK) в стандартном Java API. Достаточно легко написать свой собственный.
Другие ответы прекрасно, но здесь один с некоторыми для каждого синтаксического сахара.
int someArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int sum = 0;
for (int i : someArray)
sum += i;
Кроме того, пример суммирования массива - это показанный в спецификации языка Java 7. Пример: Раздел 10.4 - Доступ к массиву.
class Gauss {
public static void main(String[] args) {
int[] ia = new int[101];
for (int i = 0; i < ia.length; i++) ia[i] = i;
int sum = 0;
for (int e : ia) sum += e;
System.out.println(sum);
}
}
Ответ 4
Вы не можете. У других языков есть несколько методов для этого, например array_sum() в PHP, но Java нет.
Просто..
int[] numbers = {1,2,3,4};
int sum = 0;
for( int i : numbers) {
sum += i;
}
System.out.println(sum);
Ответ 5
В Apache Math: есть StatUtils.sum(double[] arr)
Ответ 6
Единственное, что я хотел бы добавить к предыдущим решениям, это то, что я бы использовал длинный, чтобы накопить общее количество, чтобы избежать переполнения значения.
int[] someArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, Integer.MAX_VALUE};
long sum = 0;
for (int i : someArray)
sum += i;
Ответ 7
int sum = 0;
for (int i = 0; i < yourArray.length; i++)
{
sum = sum + yourArray[i];
}
Ответ 8
В Java 8
Код:
int[] array = new int[]{1,2,3,4,5};
int sum = IntStream.of(array).reduce( 0,(a, b) -> a + b);
System.out.println("The summation of array is " + sum);
System.out.println("Another way to find summation :" + IntStream.of(array).sum());
Выход:
The summation of array is 15
Another way to find summation :15
Объяснение:
В Java 8
вы можете использовать концепцию сокращения, чтобы выполнить добавление.
Ответ 9
IMHO функция sum будет казаться хорошей возможностью расширить класс Arrays, где заполняются, сортируются, просматриваются, копируются и равны в реальном времени. В javadocs есть много удобных методов, поэтому справедливый вопрос при переносе Fortran в java, чтобы спросить, прежде чем запускать наш собственный вспомогательный метод. Просматривайте огромный индекс javadoc для "sum", "add" и любого другого ключевого слова, о котором вы могли бы подумать. Возможно, вы подозреваете, что кто-то уже сделал это для примитивных типов int, float, double, Integer, Float, Double? Независимо от того, насколько просто, всегда хорошо проверять. Держите код как можно более простым и не изобретайте велосипед.
Ответ 10
int sum = 0;
for (int i = 0; i < myArray.length; i++)
sum += myArray[i];
}
Ответ 11
Мне нравится этот метод лично. Мой стиль кода немного странный.
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);
Ответ 12
Я использую это:
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;
}
Ответ 13
Вам нужно сворачивать самостоятельно.
Вы начинаете с общего количества 0. Затем вы учитываете для каждого целого числа в массиве, добавляете его к сумме. Тогда, когда вы находитесь вне целых чисел, у вас есть сумма.
Если не было целых чисел, то сумма равна 0.
Ответ 14
Из этого упражнения можно извлечь две вещи:
Вам нужно как-то перебирать элементы массива - вы можете сделать это с циклом for или while. Вам нужно сохранить результат суммирования в аккумуляторе. Для этого вам нужно создать переменную.
int accumulator = 0;
for(int i = 0; i < myArray.length; i++) {
accumulator += myArray[i];
}
Ответ 15
Вы можете сделать код более удобным:
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;
}
Ответ 16
define a sum variable = 0
for each number in array:
sum = sum + number
Ответ 17
В библиотеке underscore-java есть метод sum().
Пример кода:
import com.github.underscore.lodash.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
}
}
Ответ 18
Для такой вещи нет "метода в математическом классе". Его не похоже на его функцию квадратного корня или что-то в этом роде.
Вам просто нужно иметь переменную для суммы и цикла через массив, добавляя каждое значение, которое вы найдете в сумме.
Ответ 19
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
}
}
Ответ 20
Мы можем использовать определенную пользователем функцию. Сначала инициализировать переменную суммы, равную нулю. Затем пересечь массив и добавить элемент с суммой. Затем обновите переменную суммы.
Фрагмент кода:
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);
}
}
Ответ 21
Используйте приведенную ниже логику:
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;
}
Ответ 22
/**
* Sum of all elements from 1 to 1000
*/
final int sum = Stream.iterate(1, n -> n + 1).limit(1000).mapToInt(el -> el).sum();
Ответ 23
Немного удивлен, увидев, что ни один из приведенных выше ответов не считает, что это может быть в несколько раз быстрее при использовании пула потоков. Здесь parallel
использует пул потоков fork-join и автоматически разбивает поток на несколько частей и запускает их параллельно, а затем объединяет. Если вы просто помните следующую строку кода, вы можете использовать ее во многих местах.
Таким образом, награда за самый быстрый короткий и сладкий код достается -
int[] nums = {1,2,3};
int sum = Arrays.stream(nums).parallel().reduce(0, (a,b)-> a+b);
Допустим, вы хотите сделать sum of squares
, затем Arrays.stream(nums).parallel(). map (x-> x * x).reduce(0, (a, b) → a + b). Идея в том, что вы все еще можете выполнить уменьшение без карты.
Ответ 24
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);
}
}
Ответ 25
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);
}
}
Ответ 26
В соответствии с Java 8 стало доступно использование лямбда-выражений.
Смотрите это:
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;
});
Возврат или печать суммы.