Ho avuto questa idea da questa domanda su stackoverflow.com
Il seguente modello è comune:
final x = 10;//whatever constant value
for(int i = 0; i < Math.floor(Math.sqrt(x)) + 1; i++) {
//...do something
}
Il punto che sto cercando di fare è che l'affermazione condizionale è qualcosa di complicato e non cambia.
È meglio dichiararlo nella sezione di inizializzazione del loop, come tale?
final x = 10;//whatever constant value
for(int i = 0, j = Math.floor(Math.sqrt(x)) + 1; i < j; i++) {
//...do something
}
È più chiaro?
E se l'espressione condizionale è semplice come
final x = 10;//whatever constant value
for(int i = 0, j = n*n; i > j; j++) {
//...do something
}
x
è grande in grandezza, Math.floor(Math.sqrt(x))+1
è uguale a Math.floor(Math.sqrt(x))
. :-)
{ x=whatever; for (...) {...} }
o, meglio ancora, considera se c'è abbastanza da fare che deve essere una funzione separata.