Ho una situazione in cui l' returnistruzione annidata in due forcicli verrà sempre raggiunta, in teoria.
Il compilatore non è d'accordo e richiede returnun'istruzione al di fuori del forciclo. Mi piacerebbe conoscere un modo elegante per ottimizzare questo metodo che sia al di là della mia attuale comprensione e nessuna delle mie tentate implementazioni di break sembra funzionare.
In allegato è un metodo da un'assegnazione che genera numeri interi casuali e restituisce le iterazioni ripetute fino a quando non viene trovato un secondo numero intero casuale, generato all'interno di un intervallo passato nel metodo come parametro int.
private static int oneRun(int range) {
int[] rInt = new int[range+1]; // Stores the past sequence of ints.
rInt[0] = generator.nextInt(range); // Inital random number.
for (int count = 1; count <= range; count++) { // Run until return.
rInt[count] = generator.nextInt(range); // Add randint to current iteration.
for (int i = 0; i < count; i++) { // Check for past occurence and return if found.
if (rInt[i] == rInt[count]) {
return count;
}
}
}
return 0; // Never reached
}
oneRun(0)) e vedi che raggiungi rapidamente il tuo irraggiungibilereturn
nextIntgenera un'eccezione per range < 0L'unico caso in cui viene raggiunto il ritorno è quandorange == 0
while(true)ciclo anziché un ciclo indicizzato. Questo dice al compilatore che il ciclo non tornerà mai più.