public class EsperimentiArray { /** * Metodo che prende in input un array di interi e restituisce la somma * di tutti i suoi elementi. Versione con for-each. */ public static int sommaArray(int[] a) { int somma = 0; for (int x : a) { somma += x; } return somma; } /** * Metodo che prende in input un array di interi e restituisce la somma * di tutti i suoi elementi. Versione con il for tradizionale. */ public static int sommaArray2(int[] a) { int somma = 0; for (int i = 0; i < a.length; i++) { somma += a[i]; } return somma; } /** * Metodo che prende in input un array di interi e retituisce un alto array * con gli stessi element ma "al contrario". Cioè, se l'input è * { 1, 3, 5, 9 } l'output sarà { 9, 5, 3, 1 }. */ public static int[] invertiArray(int[] a) { var b = new int[a.length]; // questo ciclo non si può scrivere con il for-each perché la variabile // indice i non serve solo ad accedere all'array a, ma anche per accedere // all'array b for (int i = 0; i < a.length; i++) { // leggiamo la i-esima posizione dall'inizio per a // e scriviamo la i-esima posizione dalla fine per b // poiché l'ultima posizione di b è b.length - 1, la i-esima // posizione dalla fine è b.length - 1 - i. b[b.length - 1 - i] = a[i]; } return b; } /** * Metodo che prende in input un array di interi e ne stampa il contenuto. */ public static void stampaArray(int[] a) { for (int x : a) { System.out.print(x + " "); } System.out.println(); } public static void main(String[] args) { // inizializziamo l'array dati direttamente con i valori 1, 3, 5, 9, per non doverli // chiedere tutte le volte che riavviamo il programma. int[] dati = { 1, 3, 5, 9 }; System.out.print("L'array originario è: "); stampaArray(dati); int[] risultato = invertiArray(dati); System.out.print("L'array invertito è: "); stampaArray(risultato); System.out.println("La somma degli elementi è " + sommaArray(dati)); } }