Eu tenho uma situação onde o return instrução aninhada em dois forloops sempre será alcançada, teoricamente.
O compilador discorda e requer um return declaração fora do forloop. Eu gostaria de saber uma maneira elegante de otimizar esse método que está além do meu entendimento atual, e nenhuma das minhas tentativas de implementação de break parece funcionar.
Attached é um método de uma atribuição que gera inteiros aleatórios e retorna as iterações percorridas até que um segundo inteiro aleatório seja encontrado, gerado dentro de um intervalo passado para o método como um 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)) e você verá que alcançará rapidamente o seu inacessívelreturn
nextIntlança uma exceção para range < 0O único caso em que o retorno é alcançado é quandorange == 0
while(true)loop em vez de indexado. Isso informa ao compilador que o loop nunca retornará.