Как найти сумму чисел из массива в java?

246
24 октября 2021, 17:40

Пытаюсь получить сумму всех чисел.

Например:

public static void testArray() {
    int myArray[] = {3, 5, 7, 12};
    for (int i = 0; i < myArray.length; i++) {
        int i2 = i + 1;
        if (i2 >= myArray.length - 1) {
            i2 = 0;
            i2 = 0;
        }
        int sum = myArray[i] + myArray[i2];
        System.out.println(sum);
    }
}

Да, да, я знаю, что этот код - кусок бреда, который даже близко не выполняет свою функцию, но я уже голову себе сломал и далеко я не математик (и не программист).

Как же мне найти сумму чисел в массиве, при условии что длина массива может быть произвольной, а числа в нем разные, не имеющие какой либо последовательности?

Answer 1

Честно не понял вопроса. В начале говорится - пытаюсь получить сумму некоторых чисел... а что значит некоторых?? Если всех чисел, то это очень просто сделать:

public static void testArray() {
    int myArray[] = {3, 5, 7, 12};
    int sum = 0;
    for (int i = 0; i < myArray.length; i++) {
        sum = sum + myArray[i];
    }
    System.out.println(sum);
}
Answer 2

В Java 8 можно в 1 строку с помощью stream

int myArray[] = {3, 5, 7, 12};
int total = IntStream.of(myArray).sum();

аналогично можно использовать класс Arrays

Arrays.stream(myArray).sum() 

Метод stream имеет перегрузки для примитивных типов и обобщенный вид, что подойдет для массивов других типов.

Answer 3

Существует несколько способов найти сумму элементов в массиве:

  • Используя Java 8 Stream API (сначала с помощью метода Arrays::stream преобразовываем массив в поток целых чисел, затем получаем сумму этого потока методом Stream::sum)

    int array[] = {3, 5, 7, 12};
    int sum = Arrays.stream(array).sum();
    
  • Цикл по элементам (for-each цикл)

    int array[] = {3, 5, 7, 12};
    int sum = 0;
    for (int element : array)
        sum += element;
    
  • Цикл с использование индексов

    int array[] = {3, 5, 7, 12};
    int sum = 0;
    for (int i = 0; i < array.length; ++i)
        sum += array[i];
    

Онлайн примеры кода:

  • Java 8 Stream API
  • Цикл for-each
  • Цикл по индексам
Answer 4
/**
 * Sum of all elements from 1 to 1000
 */
final int sum = Stream.iterate(1, n -> n + 1).limit(1000).mapToInt(el -> el).sum();
Answer 5
public class test {
    public static int[] myArray;
    public static void main(String[] args) {
        int myArray[] = {3, 5, 7, 12};
        System.out.print(sum(myArray));
    }
    public static int sum(int[] arr) {
        return sum(arr, 0, 0);
    }
    public static int sum(int[] arr, int sum, int count) {
        sum += arr[count];
        if (count < arr.length - 1) return sum(arr, sum, count + 1);
        return sum;
    }
}
Answer 6
for (int i = 0; i < arraySize; i++) {
    numbers[i] = numberOfArrayElements.nextInt();
    sum = sum + numbers[i];
}
Answer 7

Считаем сумму двух чисел. Если находится, возвращаем TRUE:

public class moed2AQuation2A2015 {
    public static void main(String args[]) {
        int arr[] = {-2, 3, 5, 7, 12};
        System.out.println(sum2(arr, 19));
    }
    public static boolean sum2(int[] arr, int num) {
        return sum2(arr, num, 0, arr.length - 1);
    }
    public static boolean sum2(int[] arr, int n, int first, int second) {
        int summa = arr[first] + arr[second];
        if (summa == n) return true;
        if (second < first && first == second) return false;
        if (first < arr.length - 1 && second != first)
            return sum2(arr, n, first, second - 1) || sum2(arr, n, first + 1, second);
        else return false;
    }
}
Answer 8
/**
 * calculate sum of  the array
 */
public static void main(String[] args) {
    int myArray[] = {3, 5, 7, 12};
    System.out.print(sum(myArray));
}
public static int sum(int[] arr) {
    return sum(arr, arr.length - 1);
}
public static int sum(int[] arr, int n) {
    if (n == 0)
        return arr[0];
    else
        return arr[n] + sum(arr, n - 1);
}
Answer 9

Вот 3 способа, от самого примитивного, до нормального. Сильно не критикуйте, сам только учусь.

import java.util.Arrays;
// сумма всех элементов массива, способ первый
class BlaBlaBla1 {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int sum = 0;
        for (int i = 0; i < nums.length; i++) sum += nums[i];
        System.out.println("1ый способ = " + sum);
    }
}
// сумма всех элементов массива, способ второй
class BlaBlaBla2 {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int sum = 0;
        sum = Arrays.stream(nums).sum();
        System.out.println("2ой способ = " + sum);
    }
}
// сумма всех элементов массива, способ третий: FOR-EACH
class BlaBlaBla3 {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int sum = 0;
        for (int x : nums) sum += x;
        System.out.println("3ий способ = " + sum);
    }
}
READ ALSO
Очередь с фиксированным размером и реверс итератором

Очередь с фиксированным размером и реверс итератором

Задача кэшировать некие поступающие объекты отчетов, но в заранее заданном объемеЧто-то вроде new ArrayBlockingQueue<Report>(100), но при определенных...

115
Из-за чего происходит exception?

Из-за чего происходит exception?

Создаю простое приложение для CRUD операцийИспользую postgresql+hibernate+java jdk 11+javafx(jfoenix)

120
Что это за компонент?

Что это за компонент?

Это какой-то новый компонент - выезжающая снизу панель? Несколько раз её виделКак её сделать?

246
Как сделать чтобы функция хранила агрегатное значение и не использовалась в GROUP BY

Как сделать чтобы функция хранила агрегатное значение и не использовалась в GROUP BY

Есть таблицы: Call, Call_Fixation(id значения других таблиц хранит), и HotlinesМне нужно вывести значения как на картинке, но в месте где "13:00:00 Trevor Helpline 2" у меня...

247