Я отримав цю ідею з цього питання на stackoverflow.com
Наступна закономірність є загальною:
final x = 10;//whatever constant value
for(int i = 0; i < Math.floor(Math.sqrt(x)) + 1; i++) {
//...do something
}
Справа, яку я намагаюся зробити, - це умовне твердження - щось складне і не змінюється.
Чи краще це оголосити в розділі ініціалізації циклу як такого?
final x = 10;//whatever constant value
for(int i = 0, j = Math.floor(Math.sqrt(x)) + 1; i < j; i++) {
//...do something
}
Це більш зрозуміло?
Що робити, якщо умовний вираз такий простий, як
final x = 10;//whatever constant value
for(int i = 0, j = n*n; i > j; j++) {
//...do something
}
x
величина за величиною, Math.floor(Math.sqrt(x))+1
дорівнює Math.floor(Math.sqrt(x))
. :-)
{ x=whatever; for (...) {...} }
або, ще краще, подумайте, чи не буде достатньо, щоб це було окремою функцією.