Tengo una situación en la que siempre se alcanzará la returndeclaración anidada en dos forbucles, en teoría.
El compilador no está de acuerdo y requiere una returndeclaración fuera del forciclo. Me gustaría conocer una forma elegante de optimizar este método que está más allá de mi comprensión actual, y ninguna de mis implementaciones de ruptura intentadas parece funcionar.
Attached es un método de una asignación que genera enteros aleatorios y devuelve las iteraciones recorridas hasta que se encuentra un segundo entero aleatorio, generado dentro de un rango pasado al método como un parámetro 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)) y verá que rápidamente alcanza su inalcanzablereturn
nextIntarroja una excepción para range < 0El único caso en el que se alcanza el retorno es cuandorange == 0
while(true)bucle en lugar de un bucle indexado. Esto le dice al compilador que el bucle nunca regresará.