Как засунуть if в условие for
Компилятор ругается, подскажите, пожалуйста, как засунуть if в for и можно ли вообще?
for (int i = 0; i <nums.length; if (i < nums.length || i < nums[i].length) i += 1)
Ответы (2 шт):
В общем виде цикл for выглядит так:
for (initialization; termination; increment) {
statement(s)
}
Если у вас сложное выражение increment, то его можно написать в конце тела цикла:
for (initialization; termination;) {
statement(s)
increment
}
Однако делать так не рекомендую, это ухудшает читаемость кода. Возможно вам нужно пересмотреть то, что вы делаете.
Даже если это вдруг можно было бы сделать, то какой смысл? Посмотрим на условие:
if (i < nums.length || i < nums[i].length) i += 1
Первая его часть i < nums.length и так всегда истинна, потому что прописана в for (int i = 0; i <nums.length; ..., её вообще нет смысла проверять.
Вторая же часть если она вдруг не выполнится приведёт к тому, что на этой итерации i не увеличится и цикл просто "застрянет" на этом значении i. Правда, неизвестно, что вы делаете внутри цикла, может быть вы изменяете nums[i] внутри цикла, в этом случае просто поместите if (i < nums[i].length) i += 1 внутрь тела цикла (в самый конец его) и всё.