Come si trova la somma di tutti i numeri in un array in Java?
Ho un problema a trovare la somma di tutti gli interi in un array in Java. Non riesco a trovare alcun metodo utile nella classe Math
per questo.
24 answers
In java-8 è possibile utilizzare i flussi:
int[] a = {10,20,30,40,50};
int sum = IntStream.of(a).sum();
System.out.println("The sum is " + sum);
Uscita:
La somma è 150.
È nel pacchetto java.util.stream
import java.util.stream.*;
Questa è una di quelle cose semplici che non (AFAIK) esiste nell'API Java standard. È abbastanza facile scrivere il tuo.
Altre risposte sono perfettamente a posto, ma eccone una con un po ' per ogni zucchero sintattico.
int someArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int sum = 0;
for (int i : someArray)
sum += i;
Inoltre, un esempio di somma di array è anche mostrato nella specifica del linguaggio Java 7. L'esempio è daSezione 10.4 - Accesso all'array .
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);
}
}
Se si utilizza Java 8, il Arrays
classe fornisce un stream(int[] array)
metodo che restituisce un sequenziale IntStream
con l'array int
specificato. È stato anche sovraccaricato per gli array double
e long
.
int [] arr = {1,2,3,4};
int sum = Arrays.stream(arr).sum(); //prints 10
Fornisce anche un metodo
stream(int[] array, int startInclusive, int endExclusive)
che ti permette di prendere un intervallo specificato dell'array (che può essere utile):
int sum = Arrays.stream(new int []{1,2,3,4}, 0, 2).sum(); //prints 3
Infine, può richiedere una matrice di tipo T
. Quindi puoi ad esempio avere un String
che contiene numeri come input e se vuoi sommarli basta fare:
int sum = Arrays.stream("1 2 3 4".split("\\s+")).mapToInt(Integer::parseInt).sum();
Non puoi. Altre lingue hanno alcuni metodi per questo come array_sum () in PHP, ma Java no.
Solo..
int[] numbers = {1,2,3,4};
int sum = 0;
for( int i : numbers) {
sum += i;
}
System.out.println(sum);
L'unico punto che aggiungerei alle soluzioni precedenti è che userei un long per accumulare il totale per evitare qualsiasi overflow di valore.
int[] someArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, Integer.MAX_VALUE};
long sum = 0;
for (int i : someArray)
sum += i;
In Apache Math : c'è StatUtils.sum(double[] arr)
In Java 8
Codice :
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());
Uscita :
The summation of array is 15
Another way to find summation :15
Spiegazione :
In Java 8
, è possibile utilizzare il concetto di riduzione per eseguire l'aggiunta.
int sum = 0;
for (int i = 0; i < yourArray.length; i++)
{
sum = sum + yourArray[i];
}
IMHO una funzione sum sembrerebbe una buona misura per estendere la classe Array dove riempire, ordinare, cercare, copiare, & uguale a vivere. Ci sono molti metodi pratici nascosti nei javadocs, quindi è una domanda giusta quando si esegue il porting di Fortran su java per chiedere prima di lanciare il nostro metodo di supporto. Cerca nell'enorme indice javadoc "somma", "aggiungi" e qualsiasi altra parola chiave a cui potresti pensare. Potresti sospettare che qualcuno lo abbia già fatto per i tipi primitivi int, float, double, Integer, Float, Double? Non importa quanto sia semplice, è sempre bene controllare. Mantieni il codice il più semplice possibile e non reinventare la ruota.
int sum = 0;
for (int i = 0; i < myArray.length; i++)
sum += myArray[i];
}
Mi piace questo metodo personalmente. Il mio stile di codice è un po ' strano.
public static int sumOf(int... integers) {
int total = 0;
for (int i = 0; i < integers.length; total += integers[i++]);
return total;
}
Abbastanza facile da usare nel codice:
int[] numbers = { 1, 2, 3, 4, 5 };
sumOf(1);
sumOf(1, 2, 3);
sumOf(numbers);
Devi rotolare il tuo.
Si inizia con un totale di 0. Quindi consideri per ogni intero nell'array, aggiungilo a un totale. Poi, quando hai finito gli interi, hai la somma.
Se non ci sono numeri interi, il totale è 0.
Ci sono due cose da imparare da questo esercizio:
È necessario scorrere gli elementi dell'array in qualche modo - è possibile farlo con un ciclo for o un ciclo while. È necessario memorizzare il risultato della somma in un accumulatore. Per questo, è necessario creare una variabile.
int accumulator = 0;
for(int i = 0; i < myArray.length; i++) {
accumulator += myArray[i];
}
Puoi rendere il tuo codice più simile a questo:
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;
}
define a sum variable = 0
for each number in array:
sum = sum + number
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);
}
}
Possiamo usare la funzione definita dall'utente. In un primo momento inizializzare variabile somma uguale a zero. Quindi attraversare la matrice e aggiungere elemento con somma . Quindi aggiornare la variabile sum.
Frammento di codice:
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);
}
}
Io uso questo:
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;
}
Esiste un metodo sum() nella libreria underscore-java.
Esempio di codice:
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
}
}
Non esiste un 'metodo in una classe matematica' per tale cosa. Non è come se fosse una funzione radice quadrata o qualcosa del genere.
Devi solo avere una variabile per la somma e scorrere l'array aggiungendo ogni valore trovato alla somma.
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
}
}
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);
}
}
A partire da Java 8 L'uso delle espressioni lambda è diventato disponibile.
Vedi questo:
int[] nums = /** Your Array **/;
Compatto:
int sum = 0;
Arrays.asList(nums).stream().forEach(each -> {
sum += each;
});
Preferisce:
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;
});
Restituisce o stampa somma.
Usa la logica a soffietto
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;
}