Ich habe eine Situation, in der die returnin zwei forSchleifen verschachtelte Anweisung theoretisch immer erreicht wird.
Der Compiler ist anderer Meinung und benötigt eine returnAnweisung außerhalb der forSchleife. Ich würde gerne einen eleganten Weg kennen, um diese Methode zu optimieren, der über mein derzeitiges Verständnis hinausgeht, und keine meiner versuchten Implementierungen von break scheint zu funktionieren.
Im Anhang befindet sich eine Methode aus einer Zuweisung, die zufällige Ganzzahlen generiert und die durchlaufenen Iterationen zurückgibt, bis eine zweite zufällige Ganzzahl gefunden wird, die innerhalb eines Bereichs generiert wird, der als int-Parameter an die Methode übergeben wird.
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)) auf und Sie sehen, dass Sie schnell Ihre nicht erreichbare erreichenreturn
nextInteine Ausnahme für wirft range < 0Der einzige Fall, in dem die Rückkehr erreicht wird, ist, wennrange == 0
while(true)eine indizierte Schleife anstelle einer indizierten Schleife verwenden. Dies teilt dem Compiler mit, dass die Schleife niemals zurückkehren wird.