import java.util.Arrays; public class InvertiArray { /** * Metodo che prende in input un array di interi e non restituisce nulla, ma * inverte direttamente il contenuto dell'array passato input. Ad esempio, se * l'array contiene {1, 2, 3} all'inizio del metodo, il suo contenuto verrà * rimpiazzato con {3, 2, 1}. */ public static void invertiArraySulPosto(int[] a) { // L'idea è di scambiare il primo e l'ultimo elemento dell'array, il // secondo e il penultimo, il terzo e il terz'ultimo e così via. Il // numero di scambi che devo fare è solo la metà della lunghezza // dell'array a. Notare che a.length / 2 è la divisione intera e quindi // restituisce un intero, non un double. for (int i = 0; i < a.length / 2; i++) { // se i indica la posizione dell'elemento i-esimo dall'inizio dell'array, // j è la posizione dell'elemento che sta in posizione i-esima dalla fine // del vettore. int j = a.length - i - 1; // Le istruzioni che seguono scambiano l'elemento in posizione i // con quello in posizione j. Notare l'uso della variabile tmp per // conservare il vecchio valore di a[i], che si perderebbe altrimenti // dopo l'istruzione "a[i] = a[j]" int vecchio_a_con_i = a[i]; a[i] = a[j]; a[j] = vecchio_a_con_i; } } public static void main(String[] args) { int[] v = { 2, 5, 6, 4 }; // Notare l'uso del metodo Arrays.toString(v) per generare una stringa // contenente tutti gli elementi di v, stringa che visualizzo con // System.out.println. System.out.println("v prima della chiamata del metodo: " + Arrays.toString(v)); invertiArraySulPosto(v); System.out.println("v dopo la chiamata del metodo: " + Arrays.toString(v)); } }