public class P1CortoCircuito { /** * Dato l'array di interi a, restituisce l'ultima posizione contenente uno zero. Si assume che * l'array a abbia zeri solo nella parte iniziale. Esempio, se a = { 0, 0, 0, 3, 5 } restituisce * 2. Se invece a = { 0, 1 } restituisce 0. */ public static int lastZero(int[] a) { int i = 0; /* * Quando "a" contiene solo zeri, "i" viene incrementato fino a diventare uguale ad * "a.length". Perché il programma funzioni, è importante che, nella condizione del while, * "i < a.length" venga prima di "a[i]==0". In questo modo, quando "i" deventa "a.length", * la condizione "i < a.length" diventa false, e grazie alla valutazione a corto-cirtcuito * usata da Java, si esce immediatamente dal ciclo while, senza provare a valutare la * condizione "a[i]==0". Se la condizione venisse valutata, il programma si interrobberebbe * con un errore, perché la massima posizione del'array "a" è la posizione "a.length - 1". */ while (i < a.length && a[i] == 0) i += 1; return i - 1; } public static void main(String[] args) { System.out.println(lastZero(new int[] {0, 0, 56, 33})); System.out.println(lastZero(new int[] {0, 0, 0, 0})); } }